
- •Тема: Системы счисления и двоичное представление информации в памяти компьютера Системы счисления
- •Перевод целых чисел из десятичной системы счисления в любую другую
- •Перевод чисел из любой системы в десятичную
- •Перевод чисел из двоичной системы счисления в шестнадцатеричную
- •Перевод чисел из восьмеричной системы счисления в двоичную
- •Перевод чисел из двоичной системы в восьмеричную
- •Двоичное представление информации в памяти компьютера
- •Задание 2 (хранение целых чисел со знаком)
- •Задачи для тренировки:
- •Тема: выполнение арифметических операций в двоичной, восьмеричной и шестнадцатеричной системах счисления.
- •Пример 2:
- •Задачи для тренировки:
Двоичное представление информации в памяти компьютера
Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта. Для хранения целых чисел со знаком старший (левый) разряд в машинном слове отводится под знак числа (если число положительное, то в знаковый разряд записывается ноль, если число отрицательное – единица).
Для представления отрицательного числа используется дополнительный код. Дополнительный код положительного числа совпадает с его прямым кодом.
Прямой код целого положительного числа может быть получен следующим образом: число переводится в двоичную систему счисления, а затем его двоичную запись слева дополняют необходимым количеством нулей в соответствии с разрядностью машинного слова. Например, прямой код числа 3710=1001012 в 16-разрядной ячейке будет иметь вид 0000000000100101.
Способ 1. Для записи внутреннего представления целого числа (-а) со знаком необходимо:
1. модуль числа записать в прямом коде в n двоичных разрядах;
2. получить обратный код числа, для этого значения всех бит инвертировать – все единицы заменить на нули и все нули заменить на единицы;
3. к полученному обратному коду прибавить единицу. Получим дополнительный код целого числа со знаком.
Пример. Внутреннее представление целого отрицательного числа -1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011 1001. Так как:
а) |-1607|=160710=110010001112;
б) прямой код в 16-разрядной ячейке: 0000 0110 0100 0111;
обратный код: 1111 1001 1011 1000;
дополнительный код (результат прибавления 1): 1111 1001 1011 1001;
Ответ: 1111 1001 1011 1001– внутренне двоичное представление числа (-1607).
Способ 2. Для записи внутреннего представления целого числа со знаком (-а) необходимо:
перевести число a-1 в двоичную систему счисления;
сделать инверсию битов: заменить все нули на единицы и единицы на нули в пределах разрядной сетки.
Пример. Внутреннее представление целого отрицательного числа -17 в 8-разрядной ячейке запишется следующим образом: 1110 1111. Так как:
переводим число а-1 в двоичную систему счисления:
17-1=16
1610=100002
прямой код в 8-разрядной ячейке: 0001 0000;
заменяем все нули на единицы и единицы на нули: 1110 1111.
Ответ: 1110 1111 – внутренне двоичное представление числа (-17).
Задание 1 (перевод чисел из одной системы счисления в другую)
Дано:
и
.
Какое из чисел
с, записанных в
двоичной системе счисления, удовлетворяет
неравенству a
< c
< b?
1) 110110012 2) 110111002 3) 110101112 4) 110110002
Общий подход:
перевести все числа (и исходные данные, и ответы) в одну (любую!) систему счисления и сравнить.
Решение 1 (через десятичную систему):
переводим в десятичную систему все ответы:
110110012 = 217, 11011100 2= 220, 110101112 = 215, 110110002=216
очевидно, что между числами 215 и 217 может быть только 216
таким образом, верный ответ – 4
Решение 2 (через двоичную систему):
(каждая цифра шестнадцатеричной системы отдельно переводится в четыре двоичных – тетраду);
(каждая цифра восьмеричной системы отдельно переводится в три двоичных – триаду, старшие нули можно не писать);
теперь нужно сообразить, что между этими числами находится только двоичное число 110110002 – это ответ 4.
Решение 3 (через восьмеричную систему):
(сначала перевели в двоичную систему, потом двоичную запись числа разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, так как для чисел от 0 до 7 их восьмеричная запись совпадает с десятичной);
, никуда переводить не нужно;
переводим в восьмеричную систему все ответы:
110110012 = 011 011 0012 = 3318 (разбили на триады справа налево, каждую триаду перевели отдельно в десятичную систему, как в п. 1)
11011100 2= 3348, 110101112 = 3278, 110110002=3308
в восьмеричной системе между числами 3278 и 3318 может быть только 3308
таким образом, верный ответ – 4 .
Решение 4 (через шестнадцатеричную систему):
никуда переводить не нужно;
(сначала перевели в двоичную систему, потом двоичную запись числа разбили на тетрады справа налево, каждую тетраду перевели в шестнадцатеричную систему; при этом тетрады можно переводить из двоичной системы в десятичную, а затем заменить все числа, большие 9, на буквы – A, B, C, D, E, F);
переводим в шестнадцатеричную систему все ответы:
110110012 = 1101 10012 = D916 (разбили на тетрады справа налево, каждую тетраду перевели отдельно в десятичную систему, все числа, большие 9, заменили на буквы – A, B, C, D, E, F, как в п. 1)
11011100 2= DC16, 110101112 = D716, 110110002=D816
в шестнадцатеричной системе между числами D716 и D916 может быть только D816
таким образом, верный ответ – 4 .