Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 1. Раздел 3

.pdf
Скачиваний:
17
Добавлен:
21.03.2016
Размер:
1.07 Mб
Скачать

Все действия аналогичны, только делить числа нужно не на тетрады, а на триады

Перевод триад идентичен переводу тетрад, даже проще

Нужно помнить перевод триад от 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