Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КП Арифметика ТЕОРИЯ_v4 2012-весна.doc
Скачиваний:
12
Добавлен:
04.09.2019
Размер:
752.13 Кб
Скачать

2.3.1. Целые числа без знака (unsigned)

Целые числа без знака используются для представления только положительных чисел. Количество двоичных чисел, которые могут быть представлены с помощью n-разрядов равно 2n. Диапазон представления целых чисел без знака определяется как 0 … 2n-1, где n – длина разрядой сетки.

Табл.2.14. Диапазон целых чисел без знака

Тип данных

Размер n, бит

Диапазон 0 … 2n-1

Dec

Hex

unsigned (short) char

8

0 … 255

00 … FF

unsigned int

16

0 … 65535

0000 … FFFF

unsigned long

32

0 … 4294967295

00000000 … FFFFFFFF

Пример: Перевести целое десятичное число 12510 в двоичную систему счисления. Двоичное число записать восьмиразрядной и шестнадцатиразрядной сетках.

Перевод числа 12510 = 11111012.

Число 12510 входит в диапазон чисел 0 … 255 и 0 … 65535.

Ответ: 1. Для n=8 число 12510 = 0111 11012; 2. Для n=16 число 12510 = 0000 0000 0111 11012 (здесь и далее в записи двоичного числа используем пробел между тетрадами для контроля разрядности числа).

Пример: Перевести целое десятичное число 25610 в двоичную систему счисления. Двоичное число записать восьмиразрядной и шестнадцатиразрядной сетках.

Перевод числа: 25610 = 1 0000 00002.

Число 25610 не входит в диапазон чисел 0 … 255 и входит в диапазон чисел 0 … 65535.

Ответ: 1. Число 25610 нельзя представить в восьмиразрядной сетке, т.к. оно не входит в диапазон 0 … 255; 2. Для n=16 число 25610 = 0000 0001 0000 00002.

Пример: Определить знак двоичного числа 10000000000000002.

Ответ: Двоичное число является положительным, так как в формате без знака все числа положительные.

2.3.2. Целые числа со знаком (signed)

Целые числа со знаком используются для представления как положительных, так и отрицательных чисел. Диапазон представления целых чисел со знаком определяется как 2n-1 … 2n-1-1, где n – количество разрядов сетки.

Табл.2.15. Диапазон целых чисел со знаком

Тип данных

Размер n, бит

Диапазон 2n-1 … 2n-1-1

Dec

Hex

signed (short) char

8

-128 … +127

00 … FF

signed int

16

-32 768 … +32 767

0000 … FFFF

signed long

32

-2 147 483 648 … +2 147 483 647

8000 0000 … 7FFF FFFF

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

Табл. 2.15.1. Положительное двоичное восьмиразрядное число

7

6

5

4

3

2

1

0

0

1

1

1

1

1

0

1

Табл. 2.15.2. Отрицательное двоичное восьмиразрядное число

7

6

5

4

3

2

1

0

1

1

1

1

1

1

0

1

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

  1. Дополнительные коды положительных двоичных чисел формата signed определены в диапазоне 0 … 2n-1-1 и совпадают с двоичными кодами чисел формата unsigned, определенных в диапазоне 0 … 2n-1-1. Дополнительные коды положительных двоичных чисел получаются делением на 2.

  2. Дополнительный код отрицательного дво­ичного числа определяется двумя способами:

    1. По формуле Х10 = [2n + Х10]2 , где Х10 – отрицательные десятичные числа в диапазоне от (-1) до (-2n/2).

    2. По правилу изменения знака двоичного числа в дополнительном коде:

2.2.1. Записать двоичное число в заданной разрядной сетке.

2.2.2. Заменить в двоичном числе все нули на единицы, а единицы на нули (поразрядная инверсия).

2.2.3. Полученное число сложить с единицей по правилам двоичной арифметики.

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

Изменение знака шестнадцатеричного числа выполняется в следующей последовательности:

1. Выполнить поразрядную инверсию каждого символа по формуле [24 - 1 - Хi]16.

2. Полученное шестнадцатеричное число сложить с единицей по правилам двоичной арифметики .

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

1. Целые положительные двоичные числа переводятся по формуле степенного ряда вида:

an-1рn-1 + an-2рn-2 + . . . + a1р1 + a0р0.

2. Целые отрицательные двоичные числа переводятся по формуле степенного ряда вида:

(-an-1)рn-1 + an-2рn-2 + . . . + a1р1 + a0р0, где (n-1) – старший разряд разрядной сетки.

Пример. Представить число +12510 в восьмиразрядной и шестнадцатиразрядной сетках.

Число +12510 входит в диапазон чисел (-128 … +127) и (-32768 … +32767).

Ответ: 1. Для n=8 число 12510 = 0111 11012; 2. Для n=16 число 12510 = 0000 0000 0111 11012.

Пример: Определить знак двоичного числа 0111 11012 в восьмиразрядной сетке.

Число 0111 11012 записано в восьмиразрядной сетке.

Ответ: Число 0111 11012 положительное, т.к. в старшем 7-ом знаковом разряде записан ноль.

Пример: Определить знак двоичного числа 0000 0000 0111 11012 в шестнадцатиразрядной сетке.

Число 0000 0000 0111 11012 записано в шестнадцатиразрядной сетке.

Ответ: Число 0000 0000 0111 11012 положительное, т.к. в старшем 15-ом знаковом разряде записан ноль.

Пример. Представить число -12510 в восьмиразрядной и шестнадцатиразрядной сетках.

Число -12510 входит в диапазон чисел (-128 … +127) и –(32768 … +32767).

Для n=8 d10 = -12510 = [28 -12510]2 = [256 -12510]2 =[13110]2 = 100000112.

Для n=16 d10 = -12510 = [216 -12510]2 = [65536 -12510]2 =[6541110]2 = 1111 1111 1000 00112.

Ответ: для n=8 -12510 = 1000 00112 ; для n=16 -12510 = 1111 1111 1000 00112.

Пример: Представить двоичное число 0111 11012 в десятичной системе счисления.

Для положительного числа используем формулу:

a7р7 + a6р6 + a5р5 + a4р4 + a3р3 + a2р2 + a1р1 + a0р0 = 0+64+32+16+8+4+0+1 = 12510.

Ответ: число 0111 11012 = +12510.

Пример: Представить двоичное число 0111 11012 в шестнадцатеричной системе счисления.

Ответ: число 0111 11012 = 7D16.

Пример: Определить знак шестнадцатеричного числа 7D 16.

Ответ: числа 7D16 положительное, т.к. в старшем разряде числа 7D16 цифра 716 = 01112, старший бит тетрады равен 02, что соответствует знаку плюс.

Пример: Изменить знак двоичного числа 111 11012 и записать число в восьмиразрядной сетке.

1. Записываем 111 11012 число в восьмиразрядной сетке 0111 11012.

2. Число 0111 11012 положительное, т.к. в старшем 7-ом знаковом разряде записан ноль.

2. Выполняем поразрядную инверсию 1000 00102.

3. Складываем число с единицей 1000 00102 + 0000 00012 = 1000 00112.

Ответ: полученное число 1000 00112 является отрицательным, т.к. в старшем 7-ом знаковом разряде записана единица.

Пример: Определить знак двоичного числа 1111 11012 в восьмиразрядной сетке.

Число 1111 11012 записано в восьмиразрядной сетке.

Ответ: Число 1111 11012 отрицательное, т.к. в старшем 7-ом знаковом разряде записана единица.

Пример: Определить знак двоичного числа 1000 0000 0111 11012 в шестнадцатиразрядной сетке.

Число 1000 0000 0111 11012 записано в шестнадцатиразрядной сетке.

Ответ: Число 1000 0000 0111 11012 отрицательное, т.к. в старшем 15-ом знаковом разряде записана единица.

Пример: Представить двоичное число 1000 00112 в десятичной системе счисления.

Для отрицательного числа используем формулу:

(-a7)р7 + a6р6 + a5р5 + a4р4 + a3р3 + a2р2 + a1р1 + a0р0 = -128+0+0+0+2+1 = -12510

Ответ: 1000 00112 = -12510.

Пример. Представить двоичное число 1000 00112 в шестнадцатеричной системе счисления.

Ответ: 1000 00112 = 8316.

Пример: Определить знак шестнадцатеричного числа 8316.

Ответ: число 8316 отрицательное, т.к. в старшем разряде числа 8316 цифра 816 = 10002, старший бит тетрады равен 12, что соответствует знаку минус.

Пример: Изменить знак двоичного числа 0111 11012 в шестнадцатиразрядной сетке.

1. Записываем 0111 11012 число в шестнадцатиразрядной сетке 0000 0000 0111 11012.

2. Выполняем поразрядную инверсию (заменяем все нули на единицы, а единицы - на нули) 1111 1111 1000 00102.

3. Складываем число с единицей

1111 1111 1000 00102 + 0000 0000 0000 00012 = 1111 1111 1000 00112.

Ответ: число 1111 1111 1000 00112.

Пример: Определить знак двоичного числа 1111 1111 1000 00112.

Двоичное число 1111 1111 1000 00112 записано в шестнадцатиразрядной сетке.

Ответ: Число 1111 1111 1000 00112 отрицательное, т.к. в старшем 15-ом знаковом разряде записана единица.

Пример: Представить двоичное число 1111 1111 1000 00112 в десятичной системе счисления.

Для отрицательного числа используем формулу:

(-a15)р15+a14р14+a13р13+a12р12+a11р11+a10р10+a9р9+a8р8+a7р7+a6р6+a5р5+a4р4+a3р3+a2р2

+a1р1+a0р0= = -32768+16384+8192+4096+2048+1024+512+256+128+0+0+0+2+1 = -12510

Ответ: 1111 1111 1000 00112 = -12510.

Пример: Представить двоичное число 1111 1111 1000 00112 в шестнадцатеричной системе счисления.

Ответ: 1111 1111 1000 00112 = FF8316

Пример: Определить знак шестнадцатеричного числа FF8316.

Ответ: числа FF8316 отрицательное, т.к. в старшем разряде символа F16 = 11112 старший бит тетрады равен 12.

Пример. Представить шестнадцатеричное число 7D16 в двоичной системе счисления.

Ответ: 7D16 = 0111 11012.

Пример. Представить шестнадцатеричное число 7D16 в десятичной системе счисления.

Число 7D 16 положительное, поэтому можно применить формулу степенного ряда: a1р1+a0р0.

7D 16 = (7)10 (13)10= 716р1+1316р0 = 112 +13 = 12510.

Ответ: 7D16 = +12510.

Пример. Представить шестнадцатеричное число 8316 в двоичной системе счисления.

Ответ: 7D16 = 1000 00112.

Пример. Представить шестнадцатеричное число 8316 в десятичной системе счисления.

Число 8316 отрицательное, поэтому сначала нужно перевести в двоичную систему счисления и перевести по формуле (-a7)р7 + a6р6 + a5р5 + a4р4 + a3р3 + a2р2 + a1р1 + a0р0.

8316 = 1000 00112 = -128 + 2 +1 = -12510.

Ответ: 8316 = -12510.