C. Тема 1. Раздел 3
.pdfВсе действия аналогичны, только делить числа нужно не на тетрады, а на триады
Перевод триад идентичен переводу тетрад, даже проще
Нужно помнить перевод триад от 0 до 111
OCT – начать с 0
0251
HEX – начать с 0x
0xA9
Часть 3
|
|
|
|
|
|
|
|
|
|
|
|
|
Тип |
Размер |
Минимальное значение |
Максимальное значение |
|
|
в байтах |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
char |
1 |
-128 |
127 |
|
|
|
|
|
|
|
|
short |
2 |
-32,768 |
32,767 |
|
|
|
|
|
|
|
|
int |
2 |
-32,768 |
32,767 |
|
|
|
|
|
|
|
|
|
4 |
-2,147,483,648 |
2,147,483,647 |
|
|
|
|
|
|
|
|
long |
4 |
-2,147,483,648 |
2,147,483,647 |
|
|
|
|
|
|
|
|
long long (C99) |
8 |
-9,223,372,036,854,775,808 |
9,223,372,036,854,775,807 |
|
|
|
|
|
|
|
Часть 4
Логичное решение – выделить один бит для хранения знака
0 – для положительных чисел и нуля
1 – для отрицательных чисел
Так появился прямой код
Примеры однобайтовых чисел:
510 = 0000 01012
-510 = 1000 01012
Так можно представить числа от -2n-1-1 до 2n-1-1
Достоинство: простота, очевидность
Недостатки:
Прямой код неудобен при выполнении арифметических операций
Возможно получение неоднозначного нуля со знаком
Для упрощения арифметических операций нужно помимо использования бита для хранения знака следует инвертировать двоичный код для отрицательных чисел
При этом получаемая единица переноса в знаковом разряде прибавляется к результату сложения
Так появился обратный код
Примеры однобайтовых чисел:
510 = 0000 01012
-510 = 1111 10102
+010 = 0000 00002; -010 = 1111 11112 != 0
510 – 210 = 0000 01012 – 0000 00102 = = 0000 01012 + 1111 11012 = 0000 00112 = 310
Так можно представить числа от -2n-1-1 до 2n-1-1
Преимущество: возможность лёгкой замены арифметического вычитания сложением
Недостатки:
По прежнему остаётся неопределённость для «положительного» и «отрицательного» нуля
Необходимо добавлять единицу переноса из знакового разряда к результату сложения
Нужно к коду отрицательного числа добавить единицу
При этом получаемая единица переноса в знаковом разряде просто отбрасывается
Так появился дополнительный код
Примеры однобайтовых чисел:
510 = 0000 01012
-510 = 1111 10112
+010 = 0000 00002; -010 = 1111 11112 + 1 = 0
510 – 210 = 0000 01012 – 0000 00102 = = 0000 01012 + 1111 11102 = 0000 00112 = 310
Так можно представить числа от -2n-1+1 до 2n-1-1
Преимущества:
Решается проблема «положительного» и «отрицательного» нуля
Облегчается сложение чисел с учётом знака
Благодаря своим преимуществам дополнительный код используется для хранения целых чисел со знаком в языке Си
Часть 5
Нужно поставить десятичную запятую (точку) в двоичном числе
Для этого следует выбрать разряд числа и считать, что этот разряд и все разряды слева от него относятся к положительным степеням числа 2, а все разряды справа от выбранного относятся к отрицательным степеням числа 2
Пример
0111.10102 = 0 23 + 1 22 + 1 21 + 1 20 + 1 2-1 + 0 2-2
10= 7.62510
Так появились вещественные числа с фиксированной точкой-3 -4