Арифметические основы ЭВМ

Арифметические  основы ЭВМ.

План.

  1. Понятие системы счисления. Виды систем счисления.
    1. Двоичная система счисления.
    2. Восьмеричная система счисления.
    3. Шестнадцатеричная система счисления.
    4. Двоично-десятичная система счисления.
  2. Перевод чисел из одной системы счисления в другую.
    1. Получение десятичного эквивалента q-ичного числа.
    2. Перевод целых чисел.
    3. Перевод дробных чисел.
    4. Табличный способ перевода.
  3. Упражнения для самостоятельной работы.

    Понятие системы счисления. Виды систем счисления.

   Система счисления соглашение о представлении чисел посредством конечной совокупности символов, называемой алфавитом.

   Различают позиционные и непозиционные  системы счисления. В позиционной системе счисления величина каждой цифры зависит от ее места положения в числе (например, десятичная система счисления). В непозиционной системе счисления величина каждой цифры фиксирована и не зависит от ее положения в числе. Пример непозиционной системы счисления - римская, в которой числа изображаются буквами латинского алфавита:

         I  всегда означает 1

         V  всегда означает 5

         X  всегда означает 10

         L  всегда означает 50

         C  всегда означает 100

         D  всегда означает 500

         M  всегда означает 1000

   В римской системе счисления значения записанных рядом букв в изображении  числа складываются, но если меньшее  число  стоит в изображении слева от большего, то оно вычитается.

   Пример:

   MDCLXXVIII=1000+500+100+50+10+10+5+1+1+1=1678

   CCXLVII=100+100-10+50+5+1+1=247

   MCDXXIX=1000+500-100+10+10+10-1=1429 

   В непозиционных системах счисления очень сложно выполнять арифметические операции (действия над числами связаны с большими трудностями и не имеют строгих правил), и в этих системах нельзя выражать отрицательные и дробные числа. Поэтому в вычислительной технике используются только позиционные системы счисления.

   Число Nq в системе счисления с основанием q записывается в виде: Nq = an-1an-2...a1a0,a-1...a-m, где

       ai – цифры системы счисления

       n - число разрядов целой части

       m - число разрядов дробной части

   В случае, если q=10, основание системы счисление не подписывают.

   Пример: 51246, 10102, AD2016, 5078.

   В позиционной системе счисления  с основанием q любое положительное число Nq может быть представлено в виде суммы степеней основания q с соответствующими коэффициентами аi:

   Nq = an-1qn-1 + an-2qn-2 + ... +a1q + a0 + a-1q-1 + ... + a-mq-m =

            (*)

   где аi = 0, 1, 2, ..., q-1.

   Запись (*) еще называют систематической записью числа в системе счисления с основанием q.

   Так в привычной нам десятичной системе счисления:

   567,8910=5·100+6·10+7+0,8+0,09=5·102+6·101+7·100+8·10-1+9·10-2

   1101,1012=1·23+1·22+0·21+1·20+1·2-1+0·2-2+1·2-3

   В вычислительной технике обычно используются системы счисления: двоичная; восьмеричная; шестнадцатеричная; двоично-десятичная.

    Двоичная  система счисления.

   Любая информация в современных ЭВМ представляется последовательностью 0 и 1 (бит). Это обусловлено тем, что большинство элементов, из которых состоит ЭВМ, по своей физической природе могут находиться лишь в одном из двух устойчивых состояний: “Включено”, “Выключено”. Такие элементы принято называть двухпозиционными. С помощью двухпозиционных элементов легко изображаются разряды двоичного числа. Одно из устойчивых состояний соответствует цифре 0, а другое - цифре 1.

   В этом отношении двоичная система  счисления имеет преимущества перед остальными системами и поэтому оказывается очень удобной для применения в ЭВМ. В двоичной системе счисления легко реализуются арифметические операции, что дает возможность значительно упростить конструкции вычислительных устройств  по сравнению с устройствами, работающими в других системах.

   Кроме того, двоичная система счисления  по плотности представления информации является одной из наиболее близких к оптимальной.

   В двоичной системе счисления основание  системы равно 2 и для представления чисел используются только два символа (2 цифры): 0 и 1. Любое число N в двоичной системе счисления представляется в виде суммы степеней основания 2 с соответствующими коэффициентами:

   N = an-12n-1+an-22n-2+...+a121+a0+a-12-1+...+a-m2-m=

        где ai = 0; 1.

   Затем с помощью этих коэффициентов  число записывается в сокращенной форме.

   Например, десятичное число 23,625 можно представить  в виде суммы: 23,625 = 1.24+0.23+1.22+1.21+1.20+1.2-1+0.2-2+1.2-3.

   Отсюда  может быть получена его запись в  двоичной системе счисления: 23,625(10) = 10111,101(2) .

   При разложении числа используют таблицу  степеней основания, отсюда этот способ перевода чисел получил название табличный.

   Поскольку двоичная система широко используется, полезно знать степени числа 2:

       20=1

       21=2

       22=4

       23=8

       24=16

       25=32

       26=64

       27=128

       28=256

       29=512

       210=1024

    Восьмеричная  система счисления

   Для ускорения процесса перевода чисел  бывает удобнее воспользоваться восьмеричной системой счисления, в которой число представляется в виде суммы степеней основания восемь:

   N = bn-18n-1+...+b282+b181+b0+b-18-1+...+b-m8-m=

     где bi = 0, 1, 2, 3, 4, 5, 6, 7.

    Шестнадцатеричная система счисления

   В ЭВМ в качестве единицы информации или объема памяти используют не бит, а байт, содержащий 8 двоичных разрядов. Один полубайт соответствует одному разряду шестнадцатеричного числа 24 = 16. Поэтому для более компактного отображения двоичного числа удобнее представлять его в шестнадцатеричной системе счисления, в которой используется 16 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Каждой цифре шестнадцатеричного числа ставят в соответствие его двоичный эквивалент - тетраду.

   Иногда  полезно знать соответствие одинаковых чисел в указанных системах счисления  и десятичной системе счисления (таблица)

Эквиваленты в системах счисления
10 СС 2 СС 8 СС 16 СС
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

    Двоично-десятичная система счисления

   Входная информация в ЭВМ обычно представляется в десятичной системе счисления, а затем по специальным программам переводится в двоичную. Однако для  того чтобы можно было обрабатывать десятичные числа в машине, их необходимо представить в форме, удобной для машины. С этой целью производится кодирование каждой десятичной цифры с помощью двоичных элементов.

   Двоично-десятичное представление является наиболее простым  представлением, где каждая десятичная цифра, представляется своим четырех-разрядным двоичным эквивалентом - “тетрадой”.

   Десятичные  цифры от 0 до 9 кодируются тетрадами  от 0000 до 1001, тетрады 1010-1111 запрещены, т.к. используются для представления  десятичных чисел больших девяти. При обратном преобразовании каждая двоичная тетрада интерпретируется как десятичная цифра.

   Пример: представим десятичное число 3759 в двоично-десятичной форме

   375910=0011 0111 0101 1001=110111010110012-10

   Пример: представим двоично-десятичное число 1000010110010011 в десятичной форме

   10000101100100112-10=1000 0101 1001 0011=859310

   Пример: 237,82(10) = 1000110111,1000001(2-10).

    Перевод чисел из одной  системы счисления  в другую.

    Получение десятичного эквивалента q-ичного числа

   Если  требуется записать десятичный эквивалент q-ичного числа, то это число следует представить в систематической форме (*), после чего выполнить арифметические операции над числами в десятичной системе счисления.

   Пример:

       A50D,0B16=A·163+5·162+0·161+D·160+0·16-1+B·16-2=10·4096+5·256+13+11·0,00390625=

             =42253,04296875

       101,112=1·22+0·21+1·20+1·2-1+1·2-2=4+1+0,5+0,25=5,75

    Перевод целых чисел

   Алгоритм  перевода целого числа состоит в  делении исходного числа на основании  новой системы счисления. Остаток  представляет младший разряд числа. Полученное частное вновь делится на основание системы счисления. Остаток дает более старший разряд числа. И так до тех пор, пока в частном не окажется число, равное нулю (или пока не получится частное, меньшее основания новой системы счисления). Следует заметить, что все операции производятся в старой системе счисления.

   Пусть, например, необходимо перевести число 91 в двоичную систему счисления. Последовательно деля его на 2, получаем: 

   

   Т.е., 9110 = 10110112.

   Перевод в восьмеричную и в шестнадцатеричную систему счисления может быть произведен следующим образом:

   Т.е., 9110=1338 и 9110=5B16.

    Перевод дробных чисел.

   Для того чтобы перевести дробное  число из одной системы счисления  в другую, его необходимо последовательно  умножать на основание новой системы счисления. При этом умножаются только дробные части получаемых произведений. В новой системе счисления дробь записывается в виде последовательности целых частей получаемых произведений. Процесс умножения происходит до тех пор, пока не будет достигнута требуемая точность (число цифр после запятой), или до тех пор пока дробная часть не станет равна нулю.

   Дробные числа редко переводятся точно, поэтому возникает необходимость  задавать точность перевода дробной  части.

   В общем случае количество знаков t, которое необходимо получить в дробной части числа в новой системе счисления , где l – количество знаков после запятой у переводимого числа, g – основание системы счисления из которой переводится число, p - основание системы счисления в которую переводится число.

   Пример: 0,39710 = 0,0110012.

          0,397·2=0,794 (0)

         0,794·2=1,588 (1)

         0,588·2=1,176 (1)

         0,176·2=0,352 (0)

         0,352·2=0,704 (0)

         0,704·2=1,408 (1)

   В примере количество знаков, которое  необходимо получить в дробной части  числа должно быть минимум 10 ( t≈3·3,3    l=3).

    Пример: 0,7510=0,112

                     0,75·2=1,5 (1)

                     0,5·2=1,0   (1)

   При переводе смешанных чисел отдельно переводятся целое и дробное  числа, каждое по своему алгоритму.

    Табличный способ перевода.

   Поскольку 8 = 23, а 16=24, то существует очень простой метод перевода двоичных чисел в восьмеричную систему счисления и наоборот.

   Для перехода от двоичного  представления числа  к восьмеричному  необходимо разбить двоичное число влево и вправо от запятой на группы из 3 цифр (триады), каждой триаде поставить в соответствие его восьмеричный эквивалент:

   Пусть, например, N = 1010111011100,101112.

   Можно записать:

   N = (001)(010)(111)(011)(100),(101)(110), т.е. в восьмеричном  представлении N = 12734,568. И соответственно, наоборот, для перехода от восьмеричного представления к двоичному каждой цифре восьмеричного числа ставят в соответствие его двоичный эквивалент триаду и затем записывают последовательность триад. Например, 25438 = (010)(101)(100)(011) = 101011000112.

   Для перехода от двоичного  представления числа к шестнадцатеричному, необходимо разбить двоичное число влево и вправо от запятой на группы из 4 цифр (тетрады), каждой тетраде поставить в соответствие его шестнадцатеричный эквивалент:

   Пусть, например, N = 1010111011100,101112.

   Можно записать:

   N =(0001)(0101)(1101)(1100),(1011)(1000), т.е. в шестнадцатеричном представлении N = 15DC,B816.

   Соответствие  между разрядами десятичной, шестнадцатеричной  и двоичной систем счисления смотри в таблице.

   Данной  таблицей удобно пользоваться в случае перевода чисел между восьмеричной и шестнадцатеричной системами счисления (через промежуточную двоичную систему счисления).

   Пример: перевести число 2DA,C116 в восьмеричную систему счисления.

   Предварительно  переведем это число в двоичную систему счисления.

   Каждая цифра исходного шестнадцатеричного числа переводится в соответствующую ей цифровую тетраду (24=16) в двоичной системе счисления в обе стороны от запятой:

   0010 1101 1010,1100 00012

   Для перевода из двоичной системы счисления  в восьмеричную в получившемся двоичном числе в обе стороны от запятой выделяем группы по три (23=8) цифры:

   (001)(0 11)(01 1)(010),(110)(0 00)(010)2

   и находим их восьмеричные эквиваленты  в соответствии с таблицей: 1332,6028.

   Так в одном из примеров было получено: 9110 = 10110112, поэтому для представления 91 в восьмеричной системе счисления, воспользуемся двоичным эквивалентом этого числа: (001)(011)(011)2 (число разбили на триады), откуда 9110 = 1338. А для представления 91 в 16-ой системе счисления, разобьем его двоичный эквивалент на тетрады (0101)(1011)2, откуда 9110 = 5(11)16=5B16.

    Упражнения  для самостоятельной  работы.

  1. Найти десятичный эквивалент числа MCMLXXIV. Ответ: 1974.
  2. Представить числа в систематической форме: 456,1210, 3401,078, 4AD7,116, 10110,112.
  3. Перевести число 0,19 из десятичной системы счисления в двоичную, а число 11001,101 из двоичной в десятичную систему. Ответ: 0,0011 и 25,625.
  4. Перевести число 6352 из восьмеричной системы счисления в двоичную, а число 1010,1101 из двоичной в десятичную систему. Ответ: 110011101010 и 10,8125
  5. Перевести число 792 из десятичной системы счисления в восьмеричную, а число 10,0111 из двоичной в десятичную систему. Ответ: 1430 и 2,4375.
  6. Перевести число 0,7 из десятичной системы счисления в шестнадцатеричную, а число 1000010001001,01 из двоично-десятичной в десятичную. Ответ: 0,B(3) и 1089,4.
  7. Перевести число 97,9 из десятичной системы счисления в восьмеричную, а число 10110,011 из двоичной в десятичную. Ответ: 141,7146 и 22,375.
  8. Перевести число 0,297 из десятичной системы счисления в двоичную, а число 5A3D из шестнадцатеричной в десятичную. Ответ: 0,010011 и 23101.
  9. Перевести число 74,35 из десятичной системы счисления в двоичную, а число 726 из восьмеричной в десятичную. Ответ: 1001010,0101100 и 470.
  10. Перевести число 251 из десятичной системы счисления в шестнадцатеричную, а число 1000011101,00111 из двоичной в восьмеричную. Ответ: FB и 1035,16.
  11. Перевести число 0,927 из десятичной системы счисления в двоичную, а число C2F,B из шестнадцатеричной в десятичную. Ответ: 0,1110110 и 3119,6875.
  12. Перевести число 297 из десятичной системы счисления в восьмеричную, а число 11000100111,01 из двоично-десятичной в десятичную. Ответ: 451 и 627,4.
  13. Перевести число 0,1AF16 в восьмеричную систему счисления. Ответ: 0,0657.
  14. Перевести число 10110110,11012 в десятичную систему счисления. Ответ: 176,8125.
  15. Перевести число ABC16 в восьмеричную систему счисления. Ответ: 5274.
  16. Перевести число 275,768 в шестнадцатеричную систему счисления. Ответ: BD,F8.
  17. Перевести число BA,C16 в восьмеричную систему счисления (с точностью до двух знаков после запятой). Ответ: 272,60.
  18. Переведите число 1778 в 16–ичную систему счисления. Ответ: 7F
  19. Переведите число 0,2123 в 9–ую систему счисления. Ответ: 0,76
  20. Перевести 21,123 в 6-ичную систему счисления. Ответ: 11,32
  21. Переведите число 17,375 из десятичной системы в двоичную. Ответ: 10001,011
  22. Перевести число 111,22334  в 16–ичную систему счисления. Ответ: 15,AF
  23. Перевести число 250,12510  в 16–ичную систему счисления. Ответ: FA,2
  24. Перевести число АВ,116  в 8–ичную систему счисления. Ответ: 253,04
  25. В 7–ичной системе счисления выполнено сложение X+XY+XYZ=YZY. Различные буквы соответствуют различным цифрам. Чему равны значения X, Y, Z в 7–ичной системе счисления? Ответ: 4, 5, 3

    Самостоятельная работа.

 

      Задание 1. Перевести десятичные числа в двоичную, восьмеричную, шестнадцатеричную, двоично-десятичную  системы счисления.

  № варианта Исходные  десятичные числа
1 2 3
1 145 1,29 89,034
2 216 5,34 74,803
3 318 7,18 13,749
4 408 9,08 65,108
5 183 3,75 32,098
 

      Задание 2. Найти десятичный эквивалент числа.

  № варианта Исходные  числа
1 2 3
1 1001,0102 271,028 12A,516
2 1110,0112 316,518 CB,216
3 100001,1012 147,538 2AD,0C16
4 100101,0012 222,338 FC1,816
5 11000,1112 451,128 BE3,A16