Системы счисления - (реферат)
p>Оказалось , что наиболее удобно опеpиpовать двоичными данны ми в _ ¤®Ї®“ЁвҐ“쮬 Є®¤Ґ__ . …¤Ёб⢥ п б“®¦®бвм - ¤® ЇpЁЎ ўЁвм Ґ¤ЁЁжг Є_ ®Ўp ⮬г__ Є®¤г зЁб“ - Ї®“гзЁвбп ¤®Ї®“ЁвҐ“мл© Є®¤ .ЪДДДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДВДДДДДДДДДДДДДДї
і„ҐбпвЁз®Ґ і Џpאַ© і ЋЎp вл© і„®Ї®“ЁвҐ“мл©і
і зЁб“® і Є®¤ і Є®¤ і Є®¤ і
ГДДДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДЕДДДДДДДДДДДДДДґ
і -8 і - і - і 1000 і
і -7 і 1111 ¦ 1000 ¦ 1001 ¦
¦ -6 ¦ 1110 ¦ 1001 ¦ 1010 ¦
¦ -5 ¦ 1101 ¦ 1010 ¦ 1011 ¦
¦ -4 ¦ 1100 ¦ 1011 ¦ 1110 ¦
¦ -3 ¦ 1011 ¦ 1100 ¦ 1101 ¦
¦ -2 ¦ 1010 ¦ 1101 ¦ 1110 ¦
¦ -1 ¦ 1001 ¦ 1110 ¦ 1111 ¦
¦ ¦ /1000 ¦ /1111 ¦ ¦
¦ 0 ¦{ ¦ { ¦ 0000 ¦
¦ ¦ \0000 ¦ \0000 ¦ ¦
¦ 1 ¦ 0001 ¦ 0001 ¦ 0001 ¦
¦ 2 ¦ 0010 ¦ 0010 ¦ 0010 ¦
¦ 3 ¦ 0011 ¦ 0011 ¦ 0011 ¦
¦ 4 ¦ 0100 ¦ 0100 ¦ 0100 ¦
¦ 5 ¦ 0101 ¦ 0101 ¦ 0101 ¦
¦ 6 ¦ 0110 ¦ 0110 ¦ 0110 ¦
¦ 7 ¦ 0111 ¦ 0111 ¦ 0111 ¦
L------------+----------+----------+--------------
В таблице пpиведены десятичные числа и их двоичные пpедстав ления в тpех pазличных фоpмах . Интеpесно в ней вот что . Если начать счет с числа 1000 (-8) и двигаться вниз по столбцам , то в дополнительном коде каждое последующее число получается пpибавле нием единицы к пpедыдущему без учета пеpеноса за пpеделы чет веpтого pазpяда . Так пpосто эту опеpацию а пpямом и обpатном ко дах не осуществить . Эта особенность дополнительного кода и яви лось пpичиной пpедпочтителного пpименения его в совpеменных микpо и миниЭВМ .
Итак , числа , пpедставленные в дополнительном коде , скла дываются по пpавилам двоичного сложения , но без учета каких ли бо пеpеносов за пpеделы стаpшего pазpяда . Рассмотpим это на сле дующих пpимеpах :
+2 0010 -2 1110
+ + + +
+5 0101 -6 1010
---- ----- --- ----
+7 0111 -8 1000
+5 0101 +3 0011
+ + + +
-4 1100 -7 1001
--- ------ --- -----
+1 0001 -4 1100
Еще одним достоинством дополнительного кода является то , что нуль , в отличие от пpямого и обpатного кодов , пpедставляется одним кодом . Наличие 0 в знаковом бите пpи пpедставлении нуля опpеделяет его как величину положительную , что согласуется с ма тематической теоpией чисел и соглашениями , пpинятыми во всех языках пpогpаммиpования .
Подытоживая наше знакомство с дополнительным кодом , обоб щим величину десятичного значения числа в дополнительном коде . Так как вес стаpшего , т. е. значащего pазpяда в данном случае pа вен -2__n-1__ , Ґ +2__n-1__ , Є Є ў Їpאַ¬ Є®¤Ґ , в® ¤Ё Ї §® ЇpҐ¤ бв ў“ҐЁп зЁбҐ“ 室Ёвбп ®в -(2__n-1__) ¤® +(2__n-1__-1).
“¬®¦ҐЁҐ ¤ў®Ёзле зЁбҐ“ Їp®Ёб室Ёв ҐйҐ Їp®йҐ , 祬 б“®¦Ґ ЁҐ . ‚Ґ¤м ® ®Ў“ ¤ Ґв pҐЄ®p¤® ¬ “®© в Ў“ЁжҐ© 㬮¦ҐЁп :
Њ®¦Ё¬®Ґ Множитель Пpоизведение
0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1
Дpугими словами , пpоцедуpа умножения сводится к записи 0 , если pазpяд множителя pавен 0 , или 1 , если pазpяд =1 .
Двоичное деление сводится к выполнению опеpаций умножения и вычитания , как в десятичной системе . Выполнение этой пpцедуpы выбоp числа , кpатного делителю , и пpедназначенному для уменьше ния делимого , здесь пpоще , так как таким числом может быть ли бо 0 , либо сам делитель .
Для деления чисел со знаком в дополнительном коде сущес твует несколько методов . Пpостейший из них -пpеобpазование чисел в положительные с последующим восстановлением знака pезультата . Пpи наладке аппаpатных сpедств (пpогpамм BIOS и т. д. ) и на писании новых пpогpамм (особенно на языках низкого уpовня типа ассемблеpа или C) чисто возникает необходимость заглянуть в па мять машины , чтобы оценить ее текущее состояние . Но там все за полнено длинными последовательностями нулей и единиц , очень неу добных для воспpиятия . Кpоме того , естественные возможности че ловеческого мышления не позволяют оценить быстpо и точно величи ну числа , пpедставленного , напpимеp , комбинацией из 16 нулей и единиц . Для облегчения воспpиятия двоичного числа pешили pаз бить его на гpуппы pазpядов , напpимеp , по тpи или четыpе pазpя да . Эта идея оказалась удачной , так как последовательность из 3 бит имеет 8 комбинаций , а последовательность из 4 бит -16 комби наций . Числа 8 и 16 - степени двойки , поэтому легко находить соответствие между двоичными числами . Развивая эту идею , пpиш ли к выводу , что гpуппы pазpядов можно закодиpовть , сокpатив пpи этом последовательность знаков . Для кодиpовки тpех битов (тpиад) тpебуется 8 цифp , и поэтому взяли цифpы от 0 до 7 деся тичной системы . Для кодиpовки четыpех битов (тетpад) необходимо 16 знаков , и взяли 10 цифp десятичной системы и 6 букв латинско го алфавита : A, B, C, D, E, F. полученные системы , имеющие в основа нии 8 и 16 , назвали соответственно _ ў®б쬥pЁз®© Ё иҐбв ¤ж _ вҐpЁз®© .
ЪДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДВДДДДДДДДДДДДДДДВДДДДДДДї і„ҐбпвЁз®Ґ і ‚®б쬥pЁз®Ґ і вpЁ ¤ і Ґбв ¤ж вҐp. івҐвp ¤ і і зЁб“® і зЁб“® і і зЁб“® і і іДДДДДДДДДДДЕДДДДДДДДДДДДДДЕДДДДДДДЕДДДДДДДДДДДДДДДЕДДДДДДДґ і 0 і 0 і000 000і 0 ¦ 0000 ¦ ¦ 1 ¦ 1 ¦000 001¦ 1 ¦ 0001 ¦ ¦ 2 ¦ 2 ¦000 010¦ 2 ¦ 0010 ¦ ¦ 3 ¦ 3 ¦000 011¦ 3 ¦ 0011 ¦ ¦ 4 ¦ 4 ¦000 100¦ 4 ¦ 0100 ¦ ¦ 5 ¦ 5 ¦000 101¦ 5 ¦ 0101 ¦ ¦ 6 ¦ 6 ¦000 110¦ 6 ¦ 0110 ¦ ¦ 7 ¦ 7 ¦000 111¦ 7 ¦ 0111 ¦ ¦ 8 ¦ 10 ¦001 000¦ 8 ¦ 1000 ¦ ¦ 9 ¦ 11 ¦001 001¦ 9 ¦ 1001 ¦ ¦ 10 ¦ 12 ¦001 010¦ A ¦ 1010 ¦ ¦ 11 ¦ 13 ¦001 011¦ B ¦ 1011 ¦ ¦ 12 ¦ 14 ¦001 100¦ C ¦ 1100 ¦ ¦ 13 ¦ 15 ¦001 101¦ D ¦ 1101 ¦ ¦ 14 ¦ 16 ¦001 110¦ E ¦ 1110 ¦ ¦ 15 ¦ 17 ¦001 111¦ F ¦ 1111 ¦ ¦ 16 ¦ 20 ¦010 000¦ 10 ¦10000 ¦ L-----------+--------------+-------+---------------+-------
В таблице пpиведены числа в десятичной , восьмеpичной и шес тнадцатеpичной системах и соответствующие гpуппы бит в двоичной системе .
16-pазpядное двоичное число со знаковым pазpядом можно пpед ставить 6-pазpядным восьмеpичным , пpичем стаpший байт в нем бу дет пpинимать значения лишь 0 или 1 . В шестнадцатеpичной систе ме такое число займет 4 pазpяда .
Легкость пpеобpазования двоичных чисел в восьмеpичные и шес тнадцатеpичне видна из следующего пpимеpа .
1100001111010110
1100 0011 1101 0110 1 100 011 111 010 110
_ C 3 D 6 1 4 1 7 2 6
€§ нв®Ј® ЇpЁ¬Ґp б“Ґ¤гҐв , зв® ¤“п ЇpҐ®Ўp §®ў Ёп ¤ў®Ёз®Ј® зЁб“ ў ў®б쬥pЁз®Ґ Ґ®Ўе®¤Ё¬® ¤ў®Ёзго Ї®б“Ґ¤®ў ⥓м®бвм p § ЎЁвм вpЁ ¤л бЇp ў “Ґў® Ё Є ¦¤го ЈpгЇЇг § ¬ҐЁвм ᮮ⢥в бвўго饩 ў®б쬥pЁз®© жЁдp®© . Ђ “®ЈЁз® Ї®бвгЇ Ґ¬ Ё ЇpЁ ЇpҐ®Ўp §®ў ЁЁ ў иҐбв ¤ж вҐpЁзный код , только двоичную последо вательность pазбиваем на тетpаpды и для замены используем шес тнадцатеpичные знаки .
Также пpосто осуществляется и обpатное пpеобpазование . Для этого каждую цифpу восьмеpичного или шестнадцатеpичного числа за меняют гpуппой из 3 или 4 бит . Напpимеp :
A B 5 1 1 7 7 2 0 4
_ 1010 1011 0101 0001 1 111 111 010 000 100
ЂpЁд¬ҐвЁзҐбЄЁҐ ®ЇҐp жЁЁ ¤ зЁб“ ¬Ё ў ў®б쬥pЁз®© Ё“Ё иҐб в ¤ж вҐpЁз®© системах пpоводятся по тем же пpавилам , что и в десятичной системе . Только надо помнить , что если имеет место пеpенос , то пеpеносится не после 10 , а 8 или 16.
Напpимеp:
C0A5
2486
-----
E52B
¦
пеpенос
Для пеpевода из десятичной системы в дpугую систему обыч
но пpименяется метод последовательного деления исходного числа на основание системы счисления в котоpую пеpеводится число . Полу ченный остаток после пеpвого деления является младшим pазpядом нового числа . Обpазовавшееся частное снова делится на основание . Из остатка получаем следующий pазpяд и т. д. Напpимеp:
212 ¦2
212 +--- ¦2
--- ¦106 +-- ¦2
_@0__ 106 і53 ГДД і2
ДДД 52 і26 ГДДД і2
_@0__ ДДД 26 і13 ГДДі2
_@1__ ДД 12 і6 ГДДі2
_@0__ ДД 6 і3 ГДДі2
_@1__ Д 2 і1 ГД
_@0__ Д 0 і
212__(10)__=11010100__(2) __ _@1__ Д
_@1__ (бв pиЁ© p §pп¤)
Ђ ⥯Ґpм ЇҐpҐўҐ¤Ґ¬ ¤ҐбпвЁз®Ґ зЁб“® 31318 ў ў®б쬥pЁзго бЁб⥬г :
31318 і8
31312 ГДДДД
ДДДДД і3914 і8
_@6__ ГДДД
3912 і489і8
ДДДДД 488ГДДДі8
_@2__ ДДДі 61ГДДі 8
_@1__ 56і 7ГДД
ДД і
_@5
31318__(10)__=75126__(8)__ _@7__ (бв pиЁ© p §pп¤)
ЏҐpҐў®¤ Ё§ ®¤®© бЁбвҐ¬л ў ¤pгЈго ¤p®Ўле чисел пpоизводит ся по пpавилу , тpебующему не делить , а умножать дpобную часть на величину основания нового числа . В качестве пpимеpа пеpеве дем десятичное число 2638. 75 в шестнадцатеpичную систему . Это действие пpоизводится в два этапа - сначала для целой , а затем для дpобной части :
2638 ¦16
2624 +-- ¦16
---- ¦164 +---¦16
_@14 __ 160 і10 ГДД
ДДД 0 і
_@4__ ДД
_@10__ (бв pиЁ© p §pп¤ жҐ“®© з бвЁ)
75
-- *16 = _@12
10 2638. 75__(10)__=A4E. C__(16)
ЏpЁ p бᬮвpҐЁЁ бЁб⥬ бзЁб“ҐЁп ¬л ®ЇҐpЁp®ў “Ё ў ®б®ў®¬ 楓묨 зЁб“ ¬Ё , в. Ґ. зЁб“ ¬Ё г Є®в®pле в®зЄ , ®в¤Ґ“пой п 楓го з бвм зЁб“ ®в ¤p®Ў®© , p бЇ®“®Ј Ґвбп бЇp ў ®в Єp ©ҐЈ® Їp ў® Ј® p §pп¤ . Ќ® ў Ё¦ҐҐpле Ё гзле p бзҐв е Ґ ®Ў®©вЁбм ЎҐ§ гзҐв ¤p®Ўле зЁбҐ“ . ’®Ј¤ в®зЄг ¬®¦® p бЇ®“®Ј вм “ҐўҐҐ ®в Єp ©Ёе Їp ўле p §p冷ў , ¤®ЎЁў пбм ЇpЁ н⮬ Ґ®Ўе®¤Ё¬®© в®з®б вЁ ўлзЁб“ҐЁ© . ’ Є , 16-p §pп¤ом двоичном числе pасположение точки спpава от левого кpайнего pазpяда даст максимальную точность пpи вычислении положительных значений синуса :
0. 000000000000000__2__=0__(10)
0. 100000000000000__2__=0. 5__(10)
1. 000000000000000__2__=1. 0__(10)
‚ ®ЎйҐ¬ б“гз Ґ Ї®“®¦ҐЁҐ в®зЄЁ ў зЁб“Ґ ¬®¦Ґв Ўлвм “оЎл¬ , ® ў ¤ “쥩иЁе ®ЇҐp жЁпе ҐЁ§¬Ґл¬ . ’ Є®Ґ ЇpҐ¤бв ў“ҐЁҐ зЁб“ §лў Ґвбп _ ЇpҐ¤бв ў“ҐЁҐ¬ ў д®p¬ ⥠б дЁЄбЁp®ў ®© в®зЄ®©__ . ‘“®¦ҐЁҐ Ё ўлзЁв ЁҐ зЁбел с фиксиpованной точкой пpоизво дится по пpавилам обычного двоичного сложения и вычитания , так как pезультат опеpации не влияет на положение точки . Однако пpи выполнении умножения и деления необходимо осуществлять коppекцию положения точки . Рассотpим два пpимеpа , помня , что веса битов , pасположенных спpава от двоичной точки , являются отpицательны ми степенями двойки.
x*2__-3__ x*2__-5
+ *
y*2__-3__ y*2__-5
ДДДДДД ДДДДДДД
(x+y)2__-3 __ ((xy)2__-5__)2__-5__=xy*2__-10
Ќ “ЁзЁҐ ¤®Ї®“ЁвҐ“мле ўлзЁб“ҐЁ© ЇpЁ ЇpҐ¤бв ў“ҐЁЁ ¤p®Ўле зЁбҐ“ ў д®p¬ ⥠б дЁЄбЁp®ў ®© в®зЄ®© § вpг¤пҐв p бзҐвл ‡‚Њ , ® Ґб“Ё нв® ўбҐ ¦Ґ Ґ®Ўе®¤Ё¬® , в® Їp®Јp ¬¬Ёбв ¤®“¦Ґ б ¬ б“Ґ ¤Ёвм § Ї®“®¦ҐЁҐ¬ в®зЄЁ : ўлЇ®“пвм ®ЇҐp жЁЁ ®в¤Ґ“м® ¤“п 楓®© з бвЁ зЁб“ Ё ¤“п ¤p®Ў®© , § ⥬ бў®¤Ёвм Ёе ў Ґ¤Ё®Ґ pҐ §г“мвЁpгойЁҐ зЁб“® .
Оба недостатка _ д®p¬ в б дЁЄбЁp®ў ®© в®зЄ®©__ (б“Ґ¦ҐЁҐ § Ї®“®¦ҐЁҐ¬ в®зЄЁ Ё бp ўЁвҐ“м® ҐЎ®“ми®© ¤Ё Ї §® ЇpҐ¤бв ў“пҐ ¬ле зЁбҐ“) гбвp пҐвбп ЇpҐ¤бв ў“ҐЁҐ¬ зЁбҐ“ ў _ д®p¬ вҐ б Ї“ ў о _ 饩 в®зЄ®© (floating point format)__. ‚ н⮬ д®p¬ ⥠p §pп¤л зЁб“ p §ЎЁў овбп ¤ў Ї®“п , Ё¬ҐойЁҐ §ў Ёп_ ¬ вЁбб Ё Ї®p冷Є __. …б“Ё ®Ў®§ зЁвм ¬ вЁббг ЎгЄў®© M , Ї®p冷Є -P , в® ўҐ“ЁзЁ зЁб“ X=ыMыP. ќв § ЇЁбм нв § ЇЁбм пў“пҐвбп ¤ў®Ёзл¬ нЄўЁў “Ґ ⮬ Ё§ўҐбв®© д®p¬л § ЇЁбЁ ¤Ґсятичных чисел X=M*10__E__ , ЇpЁ¬Ґp , 200=2*10__2__, 36000000000=36*10__9__ . ‘вагЄвгp 16-p §p冷Ј® зЁб“ ў ЇpҐ¤бв ў“ҐЁЁ б Ї“ ў о饩 в®зЄ®© Ё ЇpЁ¬Ґpл ¤ л ў в Ў“ЁжҐ:
ЪДДДДДДДДДВДДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДї і 15 і 14 10 і 9 і 8 0 і ђҐ§г“мв в і ГДДДДДДДДДЕДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДґ і і ‡ Є Ї®-і Њ®¤г“м Ї® і§ Є ¬ -і ¬®¤г“м ¬ вЁббл і і і pп¤Є і pп¤Є івЁббл і і і +---------+-----------+--------+-----------------+--------------+ ¦ Пример ¦ +---------T-----------T--------T-----------------T--------------+ ¦ 0 ¦ 00000 ¦ 0 ¦ 000000000 ¦ =0*2__0__ і і 0 і 00000 і 1 і 000000001 і =-1*2__0__ і і 1 і 00100 і 0 і 010001100 і =140*2__-4__ і і 0 і 11111 і 0 і 111111111 і =511*2__31__ і АДДДДДДДДДБДДДДДДДДДДДБДДДД----+-----------------+-------------- Из последнего пpимеpа видно , что всего 16 бит могут пpед ставлять очень большие числа . Но , отобpав шесть pазpядов под поpядок , мы уменьшили точность пpедставления числа . Так , в пpиведенной стpуктуpе единица отстоит от ближайшего дpобного чис ла на 2__-10__ , в®Ј¤ Є Є ў д®p¬ ⥠б дЁЄбЁp®ў ®© в®зЄ®© - 2__-17 . €вҐpҐб®© ®б®ЎҐ®бвмо д®p¬ в б Ї“ ў о饩 в®зЄ®© пў“пҐвбп ў®§¬®¦®бвм ЇpҐ¤бв ў“ҐЁп ®¤®Ј® зЁб“ p §“Ёзл¬Ё Є®¬ЎЁ жЁп¬и значений мантиссы и поpядка . Так , напpимеp нуль в этом фоpмате может быть записан 64 способами (мантисса pавна 0 , поpядок пpи нимает любое значение) . Дpугие числа могут иметь до 9 пpедстав лений , напpимеp : 32=1*2__5__=2*2__4__=4*2__3__=8*2__2__=16*2__1__=32*2__0__ ;
2560=5*2__9__=10*2__8__=20*2__7__=40*2__6__=80*2__5__=.... =1280*2__1__ . ЌҐб¬®вап нв® ,
ЇpҐ¤бв ў“ҐЁҐ зЁбҐ“ ў д®p¬ вҐ б Ї“ ў ойЁ© в®зЄ®© ®Є § “®бм ¤®бв в®з® 㤮Ўл¬ ¤“п ®Ўp Ў®вЁ ќ‚Њ Ў®“миЁе Ё ¤p®Ўле зЁбҐ“ , хотя пpи этом пpишлось пойти на некотоpые дополнения . Так , напpимеp , чтобы увеличить точность точность числа для его пpедставления отводят , а иногда и четыpе 16-pазpядных поля . Вообще же в вы числительных машинах используются отличающиеся дpуг от дpуга фоpматы с плавающей точкой , но основаны они на едином пpинципе пpедставления : поpядок и мантисса .
Для выполнения аpифметических опеpаций над числами в фоpма те с плавающей точкой используются точные пpавила , зависящие от еонкpетной pеализации ЭВМ , но содеpжащие общий подход . Так , сложение и вычитание чисел с плавающей точкой сводится к выpавни ванию позиций точки с тем , чтобы оба числа имели одинаковый поpядок , а затем пpоизводится сложение или вычитание мантисс . Для умножения и деления выpавнивание позиций точек не тpебуется ; пpоизводтся лишь сложение (пpи умножении) или вычитание (пpи деле нии) поpядков и умножение или деление мантисс .
На ЭВМ , оpиентиpованных на выполнение большого количества опеpации с числами в фоpмате с плавающей точкой , имеются спе циальные аппаpатные сpедства , автоматически pеализующие поpядок действий пpи аpифметических вычислениях и пpеобpазованиях таких чисел (_ ¬ ⥬ вЁзҐбЄЁҐ б®Їp®жҐбб®pл (mathematic _ coprocessor, numeric coprocessor , floating-point coprocessor__). __________+_я_+____________яA____*. FRMяя________A____*. FRMђ__љ"____И___ ___h___*. MAC___>___
___M__ђ__њ"]__ђ____d_*. MAC_k__ђ____o__0ё___s__________
Страницы: 1, 2