Таблица 1. - Изображение чисел в позиционных системах счисления, применяемых в компьютерах
ДесятичноеР=10 | ДвоичноеР=2 | ВосьмеричноеР=8 | Шестнадцатеричное Р=16 |
1 | 2 | 3 | 4 |
0123456789101112131415 | 01101110010111011110001001101010111100110111101111 | 012345671011121314151617 | 0123456789АВСDEF |
16 | 10000 | 20 | 10 |
Перевод чисел из одной системы счисления в другую
При решении задач на ЭВМ исходные данные обычно задаются в десятичной системе счисления; в этой же системе, как правило, нужно получить и результат решения задачи. Но если ЭВМ работает в какой-либо другой системе счисления, например в двоичной, то возникает необходимость перевода чисел из одной системы счисления в другую. При рассмотрении правил такого перевода мы ограничимся только такими системами счисления, у которых базисными числами являются последовательные целые числа от 0 до P-1 включительно, где P – основание системы счисления.
При переводе числа из десятичной системы счисления в систему счисления с основанием Р перевод целой и дробной части числа производится отдельно. Перевод целого числа из десятичной системы счисления в любую другую с основанием Р производится многократным делением десятичного числа на основание Р, пока частное не станет меньше Р. Последнее частное будет старшим разрядом числа, а остаток от первого деления на Р – младшим. На практике удобно пользоваться следующей схемой, которую проиллюстрируем при переводе числа 56 из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную:
56(10)→ (2) → (8) → (16)
56 | 2 | ||
56 | 28 | 2 | |
0 | 28 | 14 | 2 |
0 | 14 | 7 | 2 |
0 | 6 | 3 | 2 |
1 | 2 | 1 последнее частное | |
1 |
Ответ: 56(10)=111000(2);
56 | 8 |
56 | 7 |
0 |
Ответ: 56(10)=70(8).
56 | 16 |
48 | 3 |
8 |
Ответ: 56(10)=38(16).
Чтобы перевести правильную дробь из десятичной системы счисления в любую другую с основаниемP, ее последовательно умножают на P, при этом каждый раз умножается только дробная часть образовавшегося произведения. Процесс перевода продолжается либо до достижения заданной точности, либо до обнаружения периода. Дробь в системе счисления с основанием P записывается в виде дроби из целых частей образовавшихся произведений, начиная с первого.
Перевод десятичных дробей удобно производить по схеме, которую проиллюстрируем на примерах.
Перевести:
1) 0,75(10)→(8)
0, | 758 |
6, | 00 |
Ответ: 0,75(10)=0,6(8)
2) 0,7(10)→(16)
0, | 716 |
11, | 2 |
16 | |
3, | 2 |
Ответ: 0,7(10)=0,В(3)(16)
2) 0,4(10)→(2)
0, | 42 |
0, | 82 |
1, | 6 |
Ответ: 0,4(10)=0,01(2)
1) 0,45(10)→(2);2) 0,6(10) →(8);3) 0,95(10) →(16);
4) 425,6(10) →(8);5) 147,4(10) →(2);6) 5827,8(10) →(16).
Перевод числа, записанного в системе счисления P, в десятичную систему выполняется с учетом веса каждого разряда или путем записи числа в виде разложения по степеням основания P. Например,
1) 1101(2) →(10)
1101(2)=1· 103 + 1· 102 + 0·101+ 1· 100 (2) →1·8+1·4+0·2+1(10)=13(10);
или по схеме:
двоичное число 1 1 0 1(2)десятичное число
8 4 2 1
1х1=1 0х2=0 1х4=4 1х8=8 Ответ: 13(10)Во втором случае перевод выполняется с учетом веса каждого разряда.
2) 354,4(8) =3·82+5·81+4·80+4·8-1(10)=192+40+4+0,5(10)=236,5(10);
3) A1F,8(16)=A·162+1·161+F·160+8·16-1(16) = 10·162+1·16+15+8/16(10)= =2591,5(10).
Примеры для отработки навыков.
1) 1А0,Е(16) → (10);2) –1011101,101(2) → (10); 3) 101,1(8) → (10)
Переход из двоичной в восьмеричную и шестнадцатеричную системы счисления и обратно
Поскольку основание восьмеричной системы 8=23, то разложение числа по степеням 8 легко переводится в разложение по степеням 2 и наоборот. При этом каждая цифра восьмеричной системы (0,…,7) имеет свое разложение по степеням 2. Например,
2(8)=0·22+1·21+0·20=(010)2 6(8)=1·22+1·21+0·20=(110)2
Тогда переход от восьмеричного представления числа в двоично-восьмеричное осуществляется путем замены каждой восьмеричной цифры соответствующей двоичной триадой.
720(8)=7·82+2·81+0·80=(1·22+1·2+1·20)26+(0·22+1·2+0·20)·23+(0·22+0·21+0·20)=1·28+1·27+1·26+0·25+1·24+0·23+0·22+0·21+0·20=111010000(2)=11 010 000(2).
7 2 0
Для представления двоичного числа в восьмеричной системе надо число разбить на двоичные триады влево и вправо от запятой и затем заменить каждую триаду, соответствующей ей восьмеричной цифрой.
101 111 011, 001 100(2) = 573,14(8)
Четыре двоичных разряда позволяют закодировать любую десятичную цифру и получить 16 различных кодовых комбинаций, из которых 10 (от 0000 до 1001) используются для представления десятичных цифр. Кодовые комбинации, соответствующие числам 10 и более, условно обозначаются первыми буквами латинского алфавита (графа 4 таблицы 1). Так получается шестнадцатеричная система счисления. В программах для ЭВМ, чтобы не выписывать длинную вереницу нулей и единиц, вместо каждых четырех разрядов (тетрад) записывается их шестнадцатеричный эквивалент. Например, шестнадцатеричный эквивалент числа 0101 0001 1111 0011 будет 51F3.
Арифметические операции в электронных вычислительных машинах
В вычислительных машинах вся информация представляется в двоичной форме, а для выполнения вычислений используется непосредственно двоичная система счисления.
Арифметические операции с двоичными числами производятся так же, как с десятичными, с той лишь разницей, что в десятичной системе цифры каждого разряда возрастают в порядке 1,2,…,8,9, а при достижении величины 10 в этом разряде записывается 0 и делается перенос единицы в старший разряд. В двоичной системе используются только два символа 0 и 1, поэтому цифры в каждом разряде могут изменяться только в пределах этих двух значений, после этого происходит перенос в более старший разряд.
Таблица 1. -Таблица сложения двух бинарных чисел, имеет следующий вид:
Здесь 10 – это 2 в двоичной системе счисления.
Например:
1110,01(2)10111,011(2)
+ 1010,10(2) + 11101,101(2)11000,11(2) 110101,000(2)
Обычно для представления положительных и отрицательных чисел используются величины со знаками, причем при представлении положительных чисел знак «+» можно опускать, а знак «–» при изображении отрицательных чисел должен ставиться, что для реализации на вычислительных машинах неудобно. В вычислительных машинах используется форма представления чисел в дополнительных кодах, а знаки «+» и «–» используются для указания арифметических операций.
В двоичной системе счисления числа могут быть представлены в форме дополнения до основания системы счисления, то есть до 2. В двоичном дополнительном коде всем положительным числам предшествует 0, а отрицательным числам – единица. Таким образом, при представлении чисел в дополнительном коде крайний левый бит (старший) является знаковым: 0 означает положительное число, а 1 – отрицательное.