Арифметические действия с двоичными числами

1. Сложение двоичных чисел выполняется по правилам:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10

Пример: 1100 + 101 = 10001 (12 + 5 = 17)

Проверка: 1*24 + 1*20 = 16 + 1 = 17

2. Вычитание двоичных чисел выполняется по правилам:

0 – 0 = 0

1 – 0 = 1

1 – 1 = 0

10 – 1 = 1

Если при вычитании занимается единица старшего разряда, то она равна основанию.

10001 – 101 = 1100

3. Умножение двоичных чисел выполняют по правилам:

0 * 0 = 0

0 * 1 = 0

1 * 0 = 0

1 * 1 = 1

При умножении используют правила умножения и сложения.

111 * 101 = 100011 (7 * 5 = 35)

4. Деление двоичных чисел выполняют по правилам умножения и вычитания.

100011 : 101 = 111

Решается в столбик.

27.04.2012 (пт)

Рассмотрим работу функции fscanf.

Управляющая строка рассматривается слева направо. Если очередным символом является символ пробела или ‘\t’ или ‘\n’, то в исходных данных (во входном потоке) пропускаются все подряд идущие символы пробельной группы, пока не встретится другой символ. Если в управляющей строке встретится формат, начинающийся с символа ‘%’, то из входного потока считывается последовательность символов до пробела. Последовательность преобразуется в кодовый формат в соответствии с типом формата и записывается по адресу, заданному в соответствующем аргументе, то есть запись типа ‘&i’ означает адрес, по которому в оперативную память размещается переменная ‘i’. Если до символа пробела считается символ, который не допускается в записи читаемого значения, то ввод по текущему формату остановится на этом символе. Символ в управляющей строке, который следует за символом ‘%’ указывает способ преобразования символов из входного потока в кодовый формат в соответствии с нижеследующей таблицей.

Важно, чтобы число форматов и число аргументов функции fscanf должно быть одинаковым. Если в управляющей строке считался символ, отличный от пробела и символа ‘%’, то функция fscanf считывает очередной символ из входного потока. При этом, если считанный символ не соответствует символу в управляющей строке, то функция fscanf прерывает работу и несоответствующий символ остается во входном потоке. При соответствии прочитанный символ пропускается, и функция продолжает работу. Такая особенность позволяет организовать так называемый «неслепой ввод». Это означает, что во входном потоке из файла исходных данных с помощью лидирующих символов можно указать к какой переменной относится вводимое значение.

Работа 2.

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

Обратные и дополнительные коды используются для замены вычитания сложением. Эти коды используются для представления двоичных чисел. Десятичные – только для иллюстрации. Представление положительных чисел во всех кодах совпадает.

Прямой код.

Число преобразуется в прямой код по правилу:

x > 0, x = +0, x1, x2, …, то [x]пр = 0, х1, х2, …

х < 0, х = -0, х1, х2, …, то [x]пр = 1, х1, х2, …

Если в разряде знака 0 – число положительное, если 1 – число отрицательное.

Пример:

х = -0.10101 à [x]пр = 1.10101

Обратный код:

Число преобразуется в обратный код по правилу:

x > 0, x = +0, x1, x2, …, то [x]обр = [x]пр = х

х < 0, х = -0, х1, х2, …, то 1.{0à1, 1à0}

Пример:

х = -0.10101

[x]обр = 1.01010

Дополнительный код:

x > 0, x = +0, x1, x2, …, то [x]доп = [x]пр = [x]обр = х

х < 0, х = -0, х1, х2, …, то [x]доп определяется как дополнение числа до единицы более старшего разряда; [x]доп = 1.х1|x2|…+0,00…1

Пример:

х = -0.10101

Берется число 100000 и из него вычитается мантисса 10101. Полученное число является дополнением. В этом примере дополнение 01011.

Пример:

5(10) – 3(10) = 2(10)

Для десятичных чисел.

Дополнение 3 до 10 à 7 (10 – 3 = 7)

5 + 7 = 12 à 1|2

В обратном коде для десятичных чисел при представлении каждой позиции используются цифры от 0 до 9. Инвертированное число для 3 равно 6 (9 – 3 = 6), поэтому

5 + 6 = 11

Единица переноса добавляется к младшему разряду и получается в итоге 2.

12 – 3 = 9

Сложение двоичных чисел в компьютере. Модифицированный код.

С учетом знаков сложение чисел в компьютере выполняется следующим образом. Числа в прямом коде преобразуются в дополнительный или обратный, выполняется поразрядное сложение кодов, и результат преобразуется в прямой код для передачи на другие устройства компьютера.

Сложение в обратном коде.

Число в обратном коде складывается поразрядно, включая знаковые разряды. При возникновении в знаковом разряде единицы переноса, она прибавляется к младшему разряду, что называется циклическим переносом.

При сложении различают четыре случая:

1. При сложении двух положительных чисел получают положительное число.

2. При сложении положительного и отрицательного чисел получают отрицательное число.

3. При сложении положительного и отрицательного чисел получают положительное число.

4. При сложении двух отрицательных чисел получают отрицательное число.

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

Наши рекомендации