2015-09-17

Представление чисел в компьютере (10кл)

п.1     Метод перевода чисел из десятичной системы в двоичную

Для перевода из десятичной в двоичную систему используется метод целочисленного деления на 2:

Рассмотрим несколько примеров (нажать для увеличения):

В этом примере мы перевели десятичное число 7310 в двоичный код. После полного целочисленного деления все остатки (красные нули и единицы) необходимо переписать в обратном направлении после чего мы и получим двоичный код числа 73:

 

7310 = 10010012

 

 

Рассмотрим два других примера перевода числа из десятичной системы в двоичную:

Здесь мы перевели десятичные числа 113 и 118 в двоичный код:

11310 = 11100012

11810 = 11101102

 

п.2.  Метод перевода из двоичной системы в десятичную

Для перевода из двоичной системы в десятичную используется метод разложения числа по степеням двойки.

Например переведем двоичное число 1012 в десятичную систему:

1012 = 1*22 + 0*21 + 1*20 = 4 + 0 + 1 = 510

Другой пример:

 

п.3     Двоичное кодирование целых чисел без знака

Как правило для хранения двоичного числа в памяти компьютера выделяется либо 1байт, либо 2 байта,  либо 4 байта.

Принято называть:

2 байта - полуслово

4 байта - слово

8 байтов - двойное слово

Из курса информатики за 8 класс известно, что количество всевозможных чисел, которые можно закодировать последовательностью из n битов равно:

N = 2n

Если в нашем распоряжении только 1 байт (т.е. 8 бит), то мы можем закодировать 28 = 256 чисел. Т.к. числа в информатике и математике начинаются с нуля, то минимальным числом будет 0, а максимальным 255. Т.е. диапазон чисел будет:

Диапазон:     0 ...... 255

Если мы располагаем 2-мя байтами (16 бит), то общее количество чисел равно 216 = 65 536.

Диапазон:   0  .....  65 535

Запомним: диапазон чисел всегда на 1 меньше чем общее количество чисел. Т.е диапазон целых чисел всегда равен  0 ...... 2n - 1

Если 4 байта (32 бита), то количество чисел равно 232 = 4 294 967 296.

п.4    Двоичное кодирование целых чисел со знаком

Целые числа со знаком могут быть закодированы в двоичную систему тремя способами:

1. Прямым кодом

2. Обратным кодом

3. Дополнительным кодом

 

Рассмотрим кодирование прямым кодом:

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

Запомните: для положительных чисел знаковый бит равен 0, а для отрицательных чисел знаковый бит равен 1.

Например, при 8 битовой ячейке памяти число +11810 будет записано в двоичном коде так:

0 1 1 1 0 1 1 0

 

А число   -11810 будет отличаться лишь первым "знаковым" битом, который на этот раз будет равен 1

1 1 1 1 0 1 1 0

 

Запомните способ кодирования целых чисел со знаком, когда код положительного отличается от кода своего отрицательного эквивалента только знаковым битом (0 или 1) называется прямым кодом.

Недостатки прямого кода:

1.  Наличие +0 и -0.  В прямом коде десятичному числу 0 соответствуют 2 кода: 00000000 и 10000000. Это неизбежно приводит к "ступору" любого электрического сумматора.

2. Операция суммирования числа со своим отрицательным эквивалентом не приводит к получению нуля. Например, просуммируем числа +5 и -5:

0 0 0 0 0 1 0 1
1 0 0 0 0 1 0 1
1 0 0 0 1 0 1 0

100010102 = -1010

Как видите в результате суммирования получили -1010. Это является абсолютно недопустимым для технических устройств.

Обратный код для целых чисел со знаком

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

Рассмотрим числа +5 и -5:

+5:   0 00001012

-5:    1 11110102

Что мы имеем в результате суммирования +5 и -5?

0 0 0 0 0 1 0 1
1 1 1 1 1 0 1 0
1 1 1 1 1 1 1 1

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

Вывод по обратному коду:

Устранен один из недостатков прямого кода - при суммировании положительного и эквивалентного отрицательного числа получается ноль,

Но недостаток, связанный с наличием двух нулей не устранен: в обратном коде имеются два нуля: 000000002 и 111111112

Следовательно эта система представления не подходит для технических устройств.

Дополнительный код целых чисел со знаком

В дополнительном коде отрицательны эквивалент положительного числа образуется в два приема:

1. У положительного двоичного числа инвертируются биты (т.е. получаем обратный код числа)

2. К получившемуся числу прибавляется 1.

Посмотрим теперь на двоичные коды чисел +5 и -5 в дополнительном коде:

+5:  0 00001012

Получим дополнительный код числа -5:

1. Получаем обратный код от положительного числа +5 (переворачиваем биты) :    1 1111010

2. К получившемуся двоичному числу прибавляем 1 в 8-и битовом представлении (1 = 000000012)

Получим дополнительный код:

1 1 1 1 1 0 1 0
0 0 0 0 0 0 0 1
1 1 1 1 1 0 1 1

Т.е. число -5 в дополнительном коде имеет код:  1 11110112.

Проверим получится ли ноль при суммировании +5 и -5?

0 0 0 0 0 1 0 1
1 1 1 1 1 0 1 1
0 0 0 0 0 0 0 0

Прекрасно!!! Наконец-то мы получили заветный ноль! Теперь мы знаем, что дополнительный код должен подойти для компьютерной техники.

А как насчет двойного нуля? Есть ли в дополнительном коде -0? Давайте из +0 получим его дополнительный код:

+0:  0000 0000

1. Обратный код: 1111 11112

2. Прибавляем двоичную единицу 0000 00012

1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0

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

Интересный факт!!! Получается в 8-и битовом представлении мы имеем общее количество всевозможных чисел со знаком: 28 = 256. Из них ровно половина (128) имеют старшим битом 0 - это положительные числа, а другая половина (128) имеют старшим битом 1. НО!!! Есть одно важное "НО". Дело в том что в число положительных 128 чисел входит и число 0: 0000 00002. А это значит, что остальных положительных чисел будет не 128, а 127, а вот отрицательного нуля нет, поэтому все 128 отрицательных чисел являются отрицательными целыми числами, отличными от нуля. Самое большое отрицательное число будет -1, а самое маленькое отрицательное число: -128. Получим двоичное представление этих двух чисел в двоичном коде:

Найдем код числа -1 (в дополнительном коде):

1. Берем +1 в двоичном коде (0000 00012)

2. Инвертируем биты:  1111 1110

3. Прибавляем двоичную единицу:  1111 1110 + 0000 0001 = 1111 11112

Найдем код числа -127 (в дополнительном коде):

1. Берем код числа +127: 0111 11112 (Это самое большое положительное число, поэтому старший - знаковый - бит равен 0, а остальные биты равны 1).

2. Инвертируем все биты и получаем: 1000 0000.

3. К получившемуся числу прибавляем 1:

      1000 0000 + 0000 0001 = 1000 00012.

Проанализуруем, что мы выяснили. Код -1: 1111 11112, код -127: 1000 00012.  А теперь самое интересное. Сейчас уже понятно, что все остальные отрицательные числа от -1 до -127 будут иметь старшим битом всегда 1, а остальные биты будут всевозможными комбинациями нулей и единиц. А что же тогда за число 1000 00002? Старший его бит равен 1, т.е. число отрицательно. А теперь давайте посмотрим на двоичный код числа -127 и увидим что число 1000 00002  как раз на 1 меньше кода числа -127: 1000 00012  . А раз так, то отнимаем от числа -127 единицу и получаем, что это ничто иное как затерявшееся число -128.  Мы его не могли получить из числа +128, т.к. числа +128 попросту не существует, поэтому пришлось прибегнуть к таким косвенным рассуждениям.

Запомните:  в дополнительном коде наименьшее отрицательное число при любом размере ячейки всегда старшим битом будет иметь 1, а остальные биты будут нули.

Запомните: в дополнительном коде значащих положительных чисел всегда на 1 меньше чем значащих отрицательных, т.к. в число положительных чисел входит 0, а среди отрицательных чисел нуля нет.

 

п. 5     Двоичное представление вещественных чисел со знаком

Вещественные числа со знаком в двоичном коде могут быть закодированы двумя способами:

1. Двоичный код с фиксированной запятой.

2. Двоичный код с плавающей запятой.

п. 5.1      Двоичный код с фиксированной запятой

В двоичном коде с фиксированной запятой ячейка памяти (например 8-и битовая ячейка) делится на 3 неравные части:

1-я часть - это один старший (знаковый) бит - он отвечает за знак числа (0 - число положительное, 1 - число отрицательное).

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

3-я часть - вторя по величине - это оставшиеся 2 бита  - они предназначены для дробной части числа.

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

 

 


article

Авторизация
Логин:
Пароль:

Добро пожаловать,
гость сайта!

Статистика по сайту:

Сегодня сайт уже посетили 25 чел.

Количество всех статей на сайте: 498.

Количество online-тестов: 211.