Арифметические действия с двоичными числами
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. При сложении двух отрицательных чисел получают отрицательное число.
При сложении положительных чисел, их обратный код совпадает с прямым и не требует пояснений.