Кіріспе

Цифрлық компьютердегі сандық мәндердің ішкі бейнеленуі

Компьютерлік сан форматы – цифрлық құрылғылардың аппараттық және бағдарламалық жасақтамасындағы, мысалы, бағдарламаланатын компьютерлер мен калькуляторлардағы сандық мәндердің ішкі бейнеленуі. Сандық мәндер байттар мен сөздер сияқты биттердің топтары түрінде сақталады. Сандық мәндер мен бит үлгілері арасындағы кодтау компьютердің жұмысын жеңілдету үшін таңдалады; компьютердің командалар жиынтығында қолданылатын кодтау, әдетте, сыртқы қолдану үшін, мысалы, басып шығару және дисплейде көрсету үшін түрлендіруді қажет етеді. Әртүрлі процессорлар сандық мәндерді әртүрлі ішкі бейнелеулермен ұсынуы мүмкін, сондай-ақ бүтін және нақты сандар үшін әртүрлі стандарттар қолданылады. Көптеген есептеулер процессор тіркелгішіне сәйкес келетін сан форматтарымен орындалады, бірақ кейбір бағдарламалық жүйелер жадтың бірнеше сөздерін пайдаланып, кез келген үлкен санды көрсетуге мүмкіндік береді.

Октал және гексадецималды сандарды көрсету

Октальдық және гексадецималдық кодтау – компьютерлерде қолданылатын екілік сандарды көрсетудің ыңғайлы тәсілдері. Компьютерлік инженерлерге екілік шамаларды жазу жиі қажет болады, бірақ 1001001101010001 сияқты екілік санды жазу практикада қиын және қателерге бейім. Сондықтан, екілік шамалар 8-ге негізделген, яғни "октал" немесе, көбінесе, 16-ға негізделген "гексадецималдық" (гекс) сан түрінде жазылады. Ондық жүйеде 0-ден 9-ға дейінгі 10 сан бар, олар сандарды құрайды. Окталдық жүйеде 0-ден 7-ге дейінгі 8 сан бар. Атап айтқанда, октал "10" саны ондық "8" санымен, ал октал "20" саны ондық "16" санымен тең болады, және т.с.с. Гексадецималдық жүйеде 16 сан бар: 0-ден 9-ға дейін, одан кейін әдетте A-дан F-қа дейін. Яғни, гексадецималдық "10" ондық "16"-ға, ал гексадецималдық "20" ондық "32"-ге тең. Сандардың әртүрлі негіздегі мысалы мен салыстыруы төмендегі кестеде көрсетілген. Сандарды теру кезінде сандар жүйесін көрсету үшін форматтау белгілері қолданылады, мысалы, екілік сандар үшін 000 0000B немесе 0b000 00000, ал гексадецималдық сандар үшін 0F8H немесе 0xf8.

Белгілі нүктелік нөмірлер

Тұрақты нүктелік пішімдеу, бөлшектерді екілік түрде көрсетуге пайдалы болуы мүмкін. Санның бүтін және бөлшек бөліктерін сақтау үшін қажетті дәлдік пен ауқымға сай келетін биттердің санын таңдау қажет. Мысалы, 32 биттік форматта 16 битті бүтін санға, ал 16 битті бөлшекке қолдануға болады. Сегіздік биттен кейін төрттік бит, одан кейін екілік бит, одан кейін бірлік бит келеді. Бөлшек биттер бүтін биттердегі үлгіні жалғастырады. Келесі бит – жарты бит, одан кейін – төрттен бір бит, одан кейін – сегізден бір бит, және т.б. Мысалы:
бүтін биттер бөлшек биттер
0.500 = = 00000000 00000000.10000000 00000000
1.250 == 00000000 00000001.01000000 00000000
7.375 == 00000000 00000111.01100000 00000000

Бұл кодтау түрі кейбір мәндерді екілік түрінде нақты көрсетуге мүмкіндік бермейді. Мысалы, 0.2 ондық бөлшегі үшін ең жақын жуықтамалар келесідей болады:
13107 / 65536 = 00000000 00000000.00110011 00110011 = 0.1999969 (ондық)
13108 / 65536 = 00000000 00000000.00110011 00110100 = 0.2000122 (ондық)

Көбірек таңбалар қолданылса да, нақты бейнелеу мүмкін емес. 0.333333333 ондық санындағы сан шексіз жалғаса береді. Егер ертерек тоқтатылса, мән нақты көрсетілмейді.

Бағдарламалау тіліндегі сандар

Ассемблер тілінде бағдарламалауда бағдарламашы сандардың бейнеленуін қадағалап отыруды қажет етеді. Егер процессор қажетті математикалық операцияны қолдамаса, бағдарламашы операцияны орындау үшін тиісті алгоритм мен нұсқаулар тізбегін ойлап табуы керек; кейбір микропроцессорларда тіпті бүтін сандарды көбейту де бағдарламалық қамтамасыз ету арқылы жасалуы мүмкін. Ruby және Python сияқты жоғары деңгейлі бағдарламалау тілдері абстрактілі санды ұсынады, ол рационал, бигнум немесе кешенді сияқты кеңейтілген тип болуы мүмкін. Математикалық операциялар тілдің іске асырылуымен ұсынылған кітапханалық функциялар арқылы орындалады. Көз кодындағы математикалық символ операторды жүктеу арқылы сандық типтің бейнеленуіне сәйкес келетін әртүрлі машиналық кодты шақырады; кез келген санға – таңбалы, таңбасыз, рационал, қозғалатын нүктелі, бекітілген нүктелі, бүтін немесе кешенді – қатысты математикалық операциялар дәл сол күйінде жазылады. REXX және Java сияқты кейбір тілдер ондық қозғалатын нүктелі операцияларды ұсынады, олар өзгеше пішіндегі дөңгелектеу қателіктерін тудырады.