Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика.doc
Скачиваний:
4
Добавлен:
26.09.2019
Размер:
270.34 Кб
Скачать

Перевод правильных десятичных дробей

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

Пример: перевести число 0.1875(10)  0.0011(2)  0.14(8)  0.3(16)

Проверка: 0.14(8)  1*8-1 + 4*8-2 = 0.125 + 0.0625 = 0.1875(10)

0.3(16)  3*16-1 = 0.1875(10)

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

0.001|1(2)  1*2-2 | 1*2-1 = = 0.14(8)

Здесь три позиции вправо от запятой соответствуют 2-1, 2-2 и 2-3. Перевод неправильных дробей выполняется аналогично, но раздельно для целой и дробной части. Перевод в десятичную систему выполняется по степенному ряду с основанием соответствующей системы, из которой число переводится. Все числа ряда суммируются.

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

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.