Системы счисления и преобразования между ними

Представление данных в ЭВМ

Различные системы счисления отличаются не только базовым набором чисел, но и основными концепциями, которые лежат в их основе. Взять, например, систему счисления, которая использовалась древними римлянами: она довольно трудна для восприятия, в ней очень сложно производить вычисления и невозможно представить 0. Данная система неудобна даже для человека, не говоря уж о том, чтобы научить компьютер «понимать» ее. Говорят, что римским коммерсантам не был нужун 0 и отрицательные числа, так как они манипулировали числом «штук».

· Десятичные числа

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

A = An * Zn + An-1*Zn-1 + … + A1*Z1 +A0*Z0

Здесь:

· An - цифры числа

· Z - основание системы счисления

Например, десятичное число 1234 можно представить так:

1234 = 1*103 + 2*102 + 3*102 + 4*100.

«Вес» каждой цифры определяется позицией цифры в числе и равен степени основания, соответствующей ее позиции. Позиции нумеруются слева, начиная с 0.

· Двоичные числа

При работе с различными системами счисления мы будем записывать само число в скобках, а за скобками — основание системы. Например, если написать просто число 1100, то не понятно, в какой системе оно записано — это может быть одна тысяча сто, а может быть 12, если число записано в двоичной системе. А если представить число в виде (1100)2, то сразу все становится на свои места: число записано в двоичной системе.

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

(1100)2 = 1*23 + 1*22 + 0*21 + 0*20 = 4 + 8 =(12)10.

Обратите внимание, что для представления числа 12 в двоичной системе использованы только 4 разряда. Наибольшее число, которое можно записать 4 двоичными цифрами, равно 15, потому что

(1111)2 = 1*23 + 1*22 +1*21 + 1*20 = 8 + 4 + 2 + 1 = (15)10.

В программах двоичные числа завершаются суффиксом b. В примере это 1100b.

Для кодирования двоичных чисел применяют несколько кодов.:

Прямой код: 0 в старшем разряде соответствует положительным числам, 1 – отрицательным. Остальные разряды представляют модуль числа. В таком коде удобно осуществлять операции умножения (модули чисел перемножаются, а знаковые разряды складываются по модулю два), но неудобно реализовывать сложение. Примеры:

Разряды                 Число
Биты                 01100011b
Число + 64=26 32=25       2=21 1=20 +99 = 64 + 32 +2 + 1
Биты                 11100011b
Число - 64=26 32=25       2=21 1=20 -99 = -(64 + 32 +2 + 1)

Дополнительный код: 0 в старшем разряде соответствует положительным числам, 1 – отрицательным. Дополнительный код положительного числа, есть само число. Дополнительный код отрицательного числа образуется путем инверсии всех битов положительного числа (включая знаковый) и прибавления 1. В дополнительном коде удобно выполнять операции сложения – числа со знаком складываются точно так же, как беззнаковые. Обратное преобразование производится точно по тому же правилу. Дополнительное преимущество дополнительного кода: +0 и -0 имеют одинаковый код 000b. Примеры:

Разряды                 Число
Биты                 01100011b
Число + 64=26 32=25       2=21 1=20 +99 = 64 + 32 +2 + 1
Биты                 10011101b
Число - 64=26 32=25       2=21 1=20 -99 = -(64 + 32 +2 + 1)

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

Смещенный код: 1 в старшем разряде соответствует положительным числам, 0 – отрицательным. Представления чисел получаются путем прибавления к ним константы 2N–1, где N – число двоичных разрядов (не считая знакового). Применяется для кодирования вещественных чисел (с дробной частью) в формате с плавающей точкой.

· 8-ричные чила

Двоичная система счисления, в которой работают все цифровые электронные устройства, неудобна для человека. Для удобства представления двоичного содержимого ячеек памяти или регистров процессора используется позиционая 8-ричная система счисления. Ее алфавит состоит из 8 арабских цифр от 0 до 7. Пример 8-ричного числа:

(247)8 = 2*82 + 4*81 + 7*80 = 128 + 32 + 7 = 167.

В программах 8-ричные числа завершаются суффиксом o. В примере это 247o.

Переход от десятичных чисел к 8-ричным и обратно производится аналогично случаю двоичных чисел. Преобразование двоичных чисел в 8-ричные производится следующим образом:

· Двоичное число, начиная с младших разрядов, разбивается на триады (тройки символов). Если длина числа не кратна трём, то оно дополняется старшими нулевыми разрядами.

· Каждая триада записывается символами 8-ричного алфавита.

При обратном переходе каждый символ представляется 3-разрядным двоичном числом. Единая последовательность этих чисел и представляет собой искомое двоичное число.Знак 8-ричного числа отображается в старшем разряде: 0 соответствует положительному числу, 1 – отрицательному.

8-ричные числа сейчас почти не применяются, так как в большинстве процессоров адресуются байты, в котоых 8 позиций (не кратно 3).

· 16-ричные чила

Двоичная система счисления, в которой работают все цифровые электронные устройства, неудобна для человека. Для удобства представления двоичного содержимого ячеек памяти или регистров процессора используется позиционая 16-ричная система счисления. Ее алфавит состоит из 10 арабских цифр от 0 до 9 и шести латинских букв: A (вес 10), B (вес 11), C (вес 12), D (вес 13), (вес 14), F (вес 15). Пример 16-ричного числа:

(524D)16 = 5*163 + 2*162 + 4*161 + 13*160 = 20480 + 512 + 64 + 13 = 21069.

В программах 16-ричные числа завершаются суффиксом h. В примере это 524Dh.

То же самое число в двоичном представлении содержит в 4 раза больше символов – 0101 0010 0100 1101.!6-ричное представление более компактно.

Переход от десятичных чисел к 16-ричным и обратно производится аналогично случаю двоичных чисел. Преобразование двоичных чисел в 16-ричные производится следующим образом:

· Двоичное число, начиная с младших разрядов, разбивается на тетрады (четвёрки символов). Если длина числа не кратна четырём, то оно дополняется старшими нулевыми разрядами.

· Каждая тетрада записывается символами 16-ричного алфавита.

При обратном переходе каждый символ представляется 4-разрядным двоичном числом. Единая последовательность этих чисел и представляет собой искомое двоичное число.Знак 16-ричного числа отображается в старшем разряде: 0 соответствует положительному числу, 1 – отрицательному.

В программах 16-ричные эквиваленты сопровождаются суффиксом h.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: