Просмотр содержимого документа
«Представление чисел в памяти компьютера.»
МБОУ Лесногородская СОШ
Хранение целых
чисел в памяти компьютера.
Учитель информатики
МБОУ Лесногородская СОШ
Шунтова Л.В.
Ячейки памяти бывают:
- 1 байтовые- 8 разрядов
- 2 байтовые – 16 разрядов
- 4 байтовые- 32 разряда
- 8 байтовые- 64 разряда .
Например, число 28 10 0 записывается в 1-байтовую ячейку памяти так:
0001 1100 (28 10 = 1С 16 =11100 2 )
Это же число в 16- разрядном представлении будет иметь слева еще 8 нулей:
0000 0000 0001 1100
X 10
X 16
0
X 2
1
00
…
0000 0000
01
127
0000 0001
…
7 F
128
0111 1111
80
129
81
…
1000 0000
…
255
1000 0001
FF
…
1111 1111
По приведенной свыше таблице можно вывести следующую формулу:
Минимальное значение для беззнаковых целых чисел всегда равно 0
(все разряды нулевые), а максимальное число
X max= 2 k -1 , где К-число разрядов
В примере: 2 в 8-ой степени =256 (8 разрядов).
256-1=255
255 10
FF 16
С D 16
192 10
64 10
40 16
0
25 6 10
128 10
80 16
256 10 =1 0000 0000 2
пример :
Получить двоичную форму внутреннего представления целого положительного числа 1450 10 в 2-х байтовой ячейке.
1. Получим двоичное представление числа 1450 10 путем перевода в двоичный код.
1450 - | 2
- 725- | 2 1450 10 = 10110101010 2
0 724 362 - | 2
1 362 181 - | 2
0 180 90- | 2
1 90 45 - | 2
0 44 22 - | 2
1 22 11 - | 2
0 10 5 -| 2
1 4 2 | 2
1 2 1
0
2. Добавить к полученному двоичному коду слева нули до полного заполнения 2-х байтовой ячейки.
0
0
0
0
0
1
0
1
1
0
1
0
1
0
1
0
X 10
255
X 1 6
…
Двоичное представление в 1 - байтовой ячейке памяти
FF
1111 1111
…
192
…
191
C0
…
BF
1100 0000
128
1011 1111
…
127
…
80
1000 0000
7F
…
64
0111 1111
…
…
63
40
0100 1111
…
3 F
4
0011 1111
…
3
4
…
0000 0100
2
3
1
0000 0011
2
0000 0010
1
0 (256)
0000 0001
0
0000 0000
Целые числа со знаком ( англ. signed )
Для того, чтобы различать положительные и отрицательные числа, в двоичном коде выделяется 1 бит для хранения знака числа- знаковый разряд .
Для этого используют самый старший бит, причем
нулевое значение в нем соответствует
знаку «+», а единичное- знаку «-»
В таблице показаны шестнадцатеричные и двоичные коды некоторых характерных 8-разрядных чисел
127
- 64 10
64
С 0 16
4 0 16
FF 16
X 10
-128
X 16
-127
80
X 2
…
1 0000 0000
81
-1
…
1000 0001
0
FF
1
1111 1111
00
…
01
0000 0000
127
…
0000 0001
7F
…
0111 1111
«Кольцо» для чисел со знаком
Минимальное значение для целых чисел со знаком равно
X min= - 2 k-1
а максимальное число
X max= 2 k-1 -1 ,
где К-число разрядов
В примере :
X min= - 2 k -1
2 в 7 -ой степени = -128 (8 Разрядов)
2. ПОЛОЖИТ. ЧИСЛА-
X max= 2 k-1 -1
2 в 7-ой степени -1=128-1=127
-128
0
-1
1
X 10
X 1 6
127
Знаковый разряд
7 F
126
…
Двоичное представление в 1 - байтовой ячейке памяти
0
7E
64
…
0
111 1111
111 1110
…
63
40
…
3F
…
0
1
100 0000
0
…
0
…
1
011 FFFF
-1
0
0
…
-2
0
FF
000 0001
…
FE
1
000 0000
-63
…
1
111 1111
-64
…
C1
111 1110
…
1
C0
…
-126
…
1
100 0001
…
82
-127
100 0000
1
…
81
-128
000 0010
1
80
000 0001
1
000 0000
X 10
X 1 6
32767
Знаковый разряд
7FFF
32766
Двоичное представление в 2- байтовой ячейке памяти
0
7FFE
…
256
111 1111 1111 1111
0
…
0100
255
111 1111 1111 1110
…
…
…
0
00FF
1
…
000 0001 0000 0000
0
0
1
…
000 0000 1111 1111
-1
0
0
…
-2
0
FFFF
000 0000 0 000 0001
…
FFFE
1
000 0000 0 000 0000
1
…
- 255
111 1111 1 111 1111
- 256
…
111 1111 1 111 1110
…
1
8040
…
- 32766
…
1
000 0000 0 100 0001
…
8002
- 32767
000 0000 0 100 0000
1
…
8001
- 32768
000 0000 0 000 0010
1
8000
000 0000 0 000 0001
1
000 0000 0 000 0000
Для получения кода целого отрицательного числа надо:
1.Выполнить инверсию каждого разряда двоичного кода представленного десятичного числа (обратный код)
2. К полученному результату прибавить 1 в младший разряд
(дополнительный код)
пример: Получить двоичную форму внутреннего представления целого числа - 1450 10 в 2- х байтовой ячейке
Решение:
- получить двоичный код числа 1450 10 = 10110101010 2
- инвертировать данный двоичный код- получение обратного кода
- по обратному коду получить дополнительный код прибавлением 1 к мл. разряду
15
зн
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
0
1
0
1
0
1
0
F
1
1
1
1
0
1
1
1
1
0
0
1
1
0
A
0
1
1
0
0
0
0
1
1
0
0
1
5
1
0
1
1
0
0
0
1
1
0
0
6
1
Прямой
1
1
Обратный
0
Дополнительный
3. Полученный двоичный код 0000 0 101 1010 1001 дополнить слева значащими нулями до заполнения 2-х байтовой ячейки. 2
15
14
13
12
11
10
9
8
7
67
5
4
3
2
1
0
0
0
1
1
F
0
0
1
1
0
1
1
0
A
0
1
1
1
0
0
0
5
1
1
0
0
1
1
0
0
0
1
6
1
1
Прямой
0
Обратный
код
4. Вписанный в ячейку памяти прямой код инвертируем, получаем обратный код
ответ: FA56
задача:
получить внутреннее представление целых чисел 1607 и -1607 в 2-байтовой ячейке
Домашнее задание:
- Получить двоичную и шестнадцатеричную форму внутреннего представления целого положительного числа 1341 10 в 2-байтовой ячейке
- 2. Получить двоичную и шестнадцатеричную форму внутреннего представления целого положительного числа - 1341 10 в 2-байтовой ячейке
- По шестнадцатеричной форме внутреннего представления целого числа F7AA 1 6 в 2-байтовой ячейке восстановить само число
задача1 И.Г.Семакин «задачник-практикум» (стр.142)
По заданному шестнадцатеричному коду F670 16 внутреннего представления числа в 2-х байтовой ячейке восстановить само число
15
Зн.
1
14
13
F
1
12
1
11
1
10
0
9
7
1
8
1
7
0
6
0
5
6
1
4
1
3
1
2
0
0
1
0
0
0
0
Спасибо за внимание