Глава 3: Операции с двоичными числами в микропроцессоре

Glava 3 Operacii S Dvoicnymi Cislami V Mikroprocessore



Глава 3: Операции с двоичными числами в микропроцессоре

3.1 Введение

В компьютере арифметические операции выполняются с разрядностью 8, 16, 32 или 64 бита. Число вроде 3 в двоичном формате равно 11. Если операцию необходимо выполнить в 8 битах, это считается 00000011; перед ним ставятся 0 нулей.







Для двоичного числа, такого как 10000101, самым значимым битом является крайний левый бит. В данном случае это 1. Наименее значащий бит — это крайний бит справа, который по-прежнему равен 1 для числа. Самый старший бит обозначается сокращенно как MSB. Младший бит обозначается сокращенно LSB.



Двоичная цифра сокращается как BIT и записывается просто как бит. В числе 10010011 каждая единица или ноль — это бит. Группа из четырех битов называется полубайтом. Группа из восьми бит называется байтом. Байт состоит из двух полубайтов. Младший полубайт — это полубайт для младшего бита, а старший полубайт — это полубайт для старшего бита.



Группа из 8, 16, 32 или 64 бит называется словом, если эта группа передает информацию, выходящую за рамки простого указания числа. Группа называется словом, например, если это инструкция низкого уровня в компьютере. Существует также слово из 24 битов, но сегодня оно широко не используется.





Порядок байтов относится к порядку, в котором байты образуют слово. Рассмотрим 24-битное слово — 100100001111010100100010. Это слово состоит из трех байтов:

10010000 11110101 00100010



Самый старший байт — это самый левый байт. Когда крайний левый байт является наиболее значимым байтом, а крайний правый байт — наименее значащим байтом, это называется представлением слова с прямым порядком байтов. Представление Little Endian является противоположным.

Память компьютера представляет собой ряд ячеек, каждая из которых содержит байт. Первая ячейка памяти компьютера предназначена для байта 0, вторая — для байта 1, третья — для байта 2 и так далее. При обратном порядке байтов и для предыдущего слова наиболее значимый байт хранится в ячейке байта 0, средний байт хранится в ячейке байта 1, а младший байт хранится в ячейке байта 2. Это означает, что в нижней ячейке памяти находится более значимый байт.

Предыдущее 24-битное слово можно записать в обратном порядке байтов следующим образом:

00100010 11110101 10010000

Теперь младший байт находится в крайнем левом углу, а наиболее значимый байт — в крайнем правом. Когда крайний левый байт является наименее значимым байтом, а крайний правый байт является наиболее значимым байтом, это представление слова с прямым порядком байтов. С небольшим порядком байтов и для предыдущего слова младший байт хранится в ячейке байта 0, средний байт хранится в ячейке байта 1, а наиболее значимый байт хранится в ячейке байта 2. Это означает, что в нижней ячейке памяти находится меньший байт.

Порядок байтов не используется для битов в байте. Он также не используется для полубайтов в байте. Он используется только для порядка байтов.

Числовая линия
Число без знака является положительным числом. Положительные числа — это числа от нуля вверх. Отрицательные числа также существуют. Положительные и отрицательные числа можно представить на числовой прямой. В следующей числовой строке показаны положительные и отрицательные целые числа (целые числа), близкие к нулю:

Отрицательные числа уменьшаются от нуля вниз (влево). Во многих ситуациях ноль считается положительным. Однако в некоторых ситуациях это считается негативным. Именно поэтому перед нулем, в нижней нумерации, на схеме стоит знак плюс и минус. Если число положительное, его знак можно опустить; это относится к верхней нумерации на диаграмме. Знак минус перед отрицательным числом никогда не опускается.

3.2 Сложение двоичных чисел

В дополнении:

А + Б = С

A называется дополнительным, B — слагаемым, а S — суммой.

Рассмотрим следующее сложение двух положительных чисел по второму основанию:

В базе два единственные возможные цифры — 0 и 1. Сложение в базе 2 аналогично сложению в базе десять, но двойка в базе два — это один-ноль (10). Когда сумма двух битов в столбце равна 10, записывается 0, а 1 переносится в ближайший левый столбец; будет добавлен к сумме двух битов. Когда общая сумма равна трем, это означает 11 по основанию два. Записывается правая 1 из 11, а левая 1 добавляется к сумме битов непосредственного левого столбца. В любом случае 1, переносимая влево, называется переносом.

Читая предыдущую таблицу сложения справа, во втором столбце (справа) находится перенос, который получается из 1+1 = 10. В третьем столбце есть перенос, который получается из 1+1+ переноса 1 = 11. В четвертом столбце указан перенос, который получается в результате 0+1+ переноса 1 = 10. В пятом столбце переноса нет, поскольку суммирование представляет собой 0+0+ перенос 1 = 1. остальные столбцы не требуют переноса.

Отсчет столбцов начинается с правого конца. При 16-битном сложении возможен перенос из восьмого столбца в девятый (перемещение влево). Следующая таблица иллюстрирует это:

Арифметические и логические операции выполняются в микропроцессоре на материнской плате компьютера.

Для компьютера с 8-битным словом перенос не может автоматически перейти от восьмого бита к девятому аппаратно. Итак, чтобы сложить в таком компьютере две 16-битные группы, сложение нужно произвести дважды по парам восемь-восемь бит. Перенос перемещается и осуществляется программным обеспечением (программированием).

Чтобы сложить два числа, перед добавлением числа можно сначала преобразовать в форму дополнения до двух (см. ниже).

3.3. Дополнение до двух и его вычитание из двоичных чисел.

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

В любом из этих хранилищ каждая ячейка может принимать либо 1, либо 0, и ничего больше. В жизни есть положительные и отрицательные числа. Положительное число начинается со знака плюс (+), а отрицательное число начинается со знака минус (-). Если знак опущен, число считается положительным числом.

Чтобы решить проблему указания знака числа в компьютере, целые числа сохраняются в диапазонах. Целые числа являются целыми числами. Если для хранения диапазона возможных чисел используются восемь битов, крайний левый бит используется как знаковый бит. Если число начинается с 0, это положительное число. Если оно начинается с 1, число является отрицательным. Если для хранения диапазона возможных чисел используются шестнадцать битов, крайний левый бит используется как знаковый бит. Если число начинается с 0, то это положительное число. Если оно начинается с 1, число является отрицательным. Числа в такой форме называются числами со знаком.

На практике числа со знаком могут быть 8-битными, 16-битными, 32-битными и 64-битными. Чем шире количество битов, тем больше диапазон возможных чисел, которые можно сохранить.

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

Таблица 3.31
Целые числа, дополняющие два, в двух битах
Двоичный Десятичная дробь
01 +1
00 +0
одиннадцать -1
10 -2

Положительные двоичные числа — это 00 и 01 (то есть ноль и единица). В крайнем левом бите ноль показывает, что это положительные числа. 00 находится где-то посередине диапазона. Чтобы получить -1, инверсия числа 01 равна 10. Прибавление к этому 1 (крайний правый край) дает 11.

Поскольку используются два бита, остается только один бит для представления чисел в диапазоне, состоящем из чисел +1, +0 и -1, соответствующих 01, 00 и 11. Первый бит указывает знак. Бывает, что 10 для +2 не входит в число этих трех двоичных чисел. Число 10 начинается с 1, что означает, что это должно быть отрицательное число в дополнении до двух. Итак, 10 включено в диапазон и означает -2.

С двумя битами в дополнении до двух число всех целых чисел (положительных и отрицательных), которые могут быть представлены, равно 2. 2 = 4, а не 2 2 -1 = 3. Нюанс возникает из-за включения последнего отрицательного числа, отрицательного 2. номер с – 1. В данном случае -2 2-1 = -2 1 = -2. В диапазоне чисел, дополненных до двух, в 2 битах нет +2.

Таблица 3.32
Целые числа, дополняемые до двух, в четырех битах
Двоичный Десятичная дробь
0111 +7
0110 +6
0101 +5
0100 +4
0011 +3
0010 +2
0001 +1
0000 +0
1111 -1
1110 1110
1101 -3
1101 -3
1100 -4
1011 -5
1010 -6
1001 1001
1000 -8

Положительные двоичные числа — от 0000 до 0111 (то есть от нуля до семи). В крайнем левом бите ноль показывает, что это положительные числа. 0000 находится где-то посередине диапазона. Чтобы получить -1, инвертированное число 0001 оказывается 1110. Прибавление к этому 1 (крайний правый край) дает 1111. Чтобы получить -2, инвертированное число 0010 оказывается 1101. Прибавление 1 к этому ( от крайнего правого угла) дает 1110. Остальные отрицательные двоичные числа, например от -3 до -7, определяются аналогичным образом.

Поскольку используются четыре бита, остаются три бита для представления чисел в диапазоне: +7, +6, +5, +4, +3, +2, +1, +0, -1, -2, -. 3, -4, -5, -6 и -7 соответствуют 0111, 0110, 0101, 0100, 0011, 0010, 0001, 0000, 1111, 1110, 1101, 1100, 1011, 1010 и 1001.

-8, соответствующий 1000, должен рассматриваться отдельно. Первый бит для всех этих чисел указывает знак 0 для положительных чисел и 1 для отрицательных чисел. Бывает, что среди этих четырнадцати двоичных чисел нет 1000. 1000 начинается с 1, что означает, что оно должно быть отрицательным числом, если речь идет о дополнении до двух. Итак, в диапазон входит 1000, что означает -8.

С четырьмя битами в дополнении до двух число всех целых чисел (положительных и отрицательных), которые могут быть представлены, равно 2. 4 = 16, а не 2 4 – 1 = 15. Нюанс возникает из-за включения последнего отрицательного числа, которое является отрицательным 2. номерШирина – 1. В данном случае -2 4 -1 = -2 3 = -8. В диапазоне чисел нет +8.

Предыдущий анализ двух, четырех и более битов в дополнении до двух можно применить к двоичным числам шириной 8, 16, 32 и 64 бита.

При дополнении до двух первый (крайний левый) бит жертвуется ради знака 0 для положительного числа и 1 для отрицательного числа. Для группы бит шириной «n» имеется 2 н общее количество положительных плюс отрицательных чисел. было бы 2 н -1, если бы не счастливое последнее (наименьшее) включенное отрицательное число. Наибольшее положительное число +2. n-1 -1, а наименьшее отрицательное число - -2. n-1 -1. было бы -2 n-1 -1, если бы не счастливчики -2 n-1 включено.

Вычитание чисел в дополнении до двух
В вычитании:

А – Б = Д

A называется уменьшаемым, B — вычитаемым, а D — разностью.

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

А+ – Б = Д

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

Пример 3.31:
Оцените следующее десятичное выражение в дополнении до двух, используя четыре бита:

6 – 4

Решение:
Двоичное число для 6 равно 110. В 4-битном дополнении до двух это 0110. Двоичное число для +4 равно 100. В 4-битном дополнении до двух это 0100. 0100 должно быть преобразовано в отрицательную 4 в двоичном коде. Дополняется следующим образом: Дополнение или инверсия 0100 равна 1011. Прибавление 1 к этому значению с правого конца, как мы это сделали, дает 1100. Итак, десятичное выражение:

6 – 4, что становится:

01:10 – 01:00, что

0110 +(– 0100) = 0110 + 1100 делается так же, как в предыдущем разделе сложения, как:

Примечание: 0110 +(– 0100) то же, что 6 + – 4.

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

6 – 4 = 2

Если сделать то же самое в двоичном дополнении, ответ будет 0010, что равно +2 в двоичном исчислении. Предыдущее вычитание вычитает меньшее число из большего. В следующем примере большее число вычитается из меньшего числа. С помощью таблицы 3.32 можно узнать, действительно ли 0010 является дополнением до двух, что эквивалентно +2.

Пример 3.32:
Оцените следующее десятичное выражение в дополнении до двух с четырьмя битами:

4 – 6

Решение:
Двоичное число для 4 равно 100. В 4-битном дополнении до двух это 0100. Двоичное число для +6 равно 110. В 4-битном дополнении до двух это 0110. 0110 необходимо преобразовать в отрицательное 6 в дополнении до двух. следующим образом: Дополнение или инверсия 0110 равна 1001. Прибавление 1 к этому значению с правого конца, как мы это делали в предыдущем сложении, дает 1010. Итак, десятичное выражение:

4–6, что становится:

01:00 – 01:10, что

0100 +(– 0110) = 0100 + 1010 делается так же, как в предыдущем разделе сложения, как:

Примечание. 4+ – 6 соответствует 0100 +(– 0110).

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

4 – 6 = -2

Если сделать то же самое в двоичном дополнении, ответ будет 1110, что равно -2 в двоичном исчислении. С помощью таблицы 3.32 можно узнать, действительно ли 1110 является дополнением до двух, что эквивалентно -2.

3.4 Умножение двоичных чисел

В заявлении:

А х В = Р

А называется множимым, В — множителем, а Р — произведением. Выражение A x B означает сложение A, B количество раз, когда A и B являются целыми числами (целыми числами).

Умножение в двоичном формате аналогично умножению в десятичном формате. Однако вместо того, чтобы делать это в десятичном формате, это делается в двоичном формате. Умножение десятичного выражения 42 x 10 выполняется в двоичном формате следующим образом: 42 10 = 101010 2 и 10 10 = 1010 2 :

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

Умножение также можно рассматривать следующим образом: в этом умножении по основанию два, если бит (цифра) в множителе равен 1, младший бит его частичного произведения является младшим битом множимого, который перепечатывается непосредственно под ним; а остальные биты множимого повторяются влево. В этом умножении по основанию два, если бит (цифра) в множителе равен 0, его частичное произведение состоит из нулей с младшим битом 0 непосредственно под ним. Количество всех нулей — это количество битов в множимом.

3.5 Деление двоичных чисел

В заявлении:

А ÷ Б = Q

A называется дивидендом, B называется делителем, а P называется частным. Частное может сопровождаться остатком. Выражение A ÷ B означает, сколько раз можно сложить B, чтобы получить A или быть близким к нему, так что остаток равен 0 или меньше, чем B.

Деление может осуществляться разными способами. Показанное здесь подразделение — это восстановительное подразделение.

Восстановительный отдел
Это метод деления столбиком, который изучают в школах. Если 237 разделить на 6, ответ будет 39, остаток 3. 237 10 в базе 2 это 11101101 2 и 6 10 по основанию 2 это 110 2 . 39 10 в базе 2 это 100111 2 и 3 10 по основанию 2 это 11 2 .

Итак, 11101101 2 разделить на 110 2 дает 100111 2 остаток 11 2 в базе два. При использовании метода восстановления двоичные числа являются обычными числами и не обязательно имеют дополнение до двух. Следующая структура делит 11101101 2 на 110 2 дать 100111 2 остаток 11 2 :

Вычитание выполняется обычно, а не с использованием дополнения до двух. Поскольку это основание два, заимствование равно двум, а не десяти. Частичные дивиденды составляют 10, 101, 1011, 1010 и 1001. 11 — остаток. Поскольку делитель трехзначный, деление производится в основном на группы по три цифры от заданного делимого. Частное — это целое число (целое число), и для этой задачи оно равно 100111. Результат частного и остатка такой же, как и ожидалось.

3.6 Арифметические операции с программным и аппаратным обеспечением

На материнской плате компьютера есть часы. Тики часов называются импульсами. При каждом тактовом импульсе в разных местах материнской платы принимается одно или несколько решений; и это связано с программированием (программным обеспечением).

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

Когда вычитание выполняется с использованием дополнения до двух, необходимы как минимум два тактовых импульса. При первом тактовом импульсе мультиплексор направляет вычитаемое на набор вентилей НЕ (один вентиль НЕ на цифру). Во втором тактовом импульсе комбинационная логика добавляет 1 к выходу вентиля НЕ и продолжает складывать полученное вычитаемое и вычитаемое. Все это добавление может происходить в течение одного такта.

Сложение, умножение и деление все еще могут быть невозможны при программировании с использованием таблиц истинности. Однако в этом онлайн-курсе карьеры это не рассматривается.

3.7 Логические операции в микропроцессоре

И, ИЛИ, исключающее ИЛИ и инвертировать

И
В следующей таблице показано побитовое И. Это означает, что для двух разных двоичных чисел соответствующие биты объединяются оператором AND на основе таблицы истинности AND:

Двигаясь слева направо, 1 И 1 = 1; 0 И 1 = 0; 0 И 0 = 0; 1 И 0 = 0; и так далее в соответствии с таблицей истинности AND.

ИЛИ
Следующая таблица иллюстрирует побитовое ИЛИ. Это означает, что для двух разных двоичных чисел соответствующие биты объединяются по ИЛИ на основе таблицы истинности ИЛИ:

Двигаясь слева направо, 1 ИЛИ 1 = 1; 0 ИЛИ 1 = 1; 0 ИЛИ 0 = 0; 1 ИЛИ 0 = 1; и так далее в соответствии с таблицей истинности ИЛИ.

БЕСПЛАТНО
В следующей таблице показано побитовое исключающее ИЛИ. Это означает, что для двух разных двоичных чисел соответствующие биты подвергаются операции XOR на основе таблицы истинности XOR:

Двигаясь слева направо, 1 XOR 1 = 0; 0 исключающее ИЛИ 1 = 1; 0 исключающее ИЛИ 0 = 0; 1 исключающее ИЛИ 0 = 1; и так далее в соответствии с таблицей истинности XOR.

Инвертировать (НЕ)
В следующей таблице показано побитовое НЕ (инвертирование). Это означает, что на этот раз для одного двоичного числа каждый бит инвертируется на основе таблицы истинности НЕ:

Двигаясь слева направо, НЕ 1 = 0; НЕ 0 = 1; НЕ 0 = 1; НЕ 1 = 0; и так далее в соответствии с Таблицей НЕ-истины.

Сдвиг вправо или влево

Сдвиг вправо
Следующее двоичное число сдвигается на 3 битовые позиции вправо, при этом нули вставляются в освободившиеся битовые позиции слева:

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

Сдвиг влево
Следующее двоичное число сдвигается на 3 битовые позиции влево, при этом нули вставляются в освободившиеся битовые позиции справа:

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

Вращение вправо или влево

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

Повернуть вправо
Следующее двоичное число поворачивается на 3 бита вправо:

Ротация может производиться на одно, два, три, четыре и т.д. места.

Повернуть влево
Следующее двоичное число поворачивается на 3 битовые позиции влево:

Ротация может производиться на одно, два, три, четыре и т.д. места.

3.8 Набор символов ASCII и его кодовые значения

ASCII означает «Американский (США) стандартный код обмена информацией». Представьте себе клавиатуру с 96 клавишами. Это идеальная клавиатура, в которой клавиши с прописными буквами отличаются от клавиш со строчными буквами. Каждая вторая клавиша представляет собой символ, встречающийся на английской (США) клавиатуре. Символы и коды (соответствующие номерам символов) перечислены ниже:

В этой таблице первые 32 символа (включая символ с номером 00) 16 = 0 10 code) — непечатаемые символы. Это управляющие персонажи. Их не видно на экране (мониторе), где все ровно. У них есть только эффект. Давайте обсудим это позже.

Остальные символы являются печатными; они видны на экране. Имеется 128 символов ASCII. 2 7 = 128.1111111 2 = 127 10 . 7 в 2 7 означает 7 бит.

Сейчас, 1111111 2 + 1 2 такой же как:

Здесь 10 000 000 2 = 128 10 . Есть 128 10 символы из предыдущего списка (таблицы) символов ASCII. Сюда входит нулевой символ, код которого в шестнадцатеричной системе счисления (шестнадцатеричный) равен 00, что эквивалентно 0 в десятичной системе счисления.

Поскольку всего символов 128, 128 минус 32 непечатаемых символа дают 96 печатных символов. В этом разделе предполагается, что существует идеальная клавиатура с 96 печатными символами. На этой идеальной клавиатуре клавиши для прописных английских символов отличаются от клавиш для строчных английских символов.

Каждый символ на клавиатуре представлен числом по основанию два из 7 бит, которое не показано в списке. Например, заглавная буква «N» представлена ​​семью битами 1001110 по основанию 2. Чтобы преобразовать 1001110 2 до основания 16, перед ним поставьте 0 и сгруппируйте результат в четырехбитные подгруппы следующим образом:

| 0100 | 1110 | 2 = | 4 | Е | 16

Это 01001110 2 = 4Е 16 . Чтобы преобразовать 4E 16 по основанию десять, сделайте следующее:

4 х (16) 1 + Е х (16) 0 = 4 х 16 + Е х 1 = 4 х 16 + 14 х 1 = 64 + 14 = 78 10

Справа от «N» в списке (таблице) стоит шестнадцатеричное число 4Е и десятичное число 78.

Другой пример: символ «[» представлен семью битами 1011011 по основанию 2. Чтобы преобразовать 1011011 2 до основания 16, перед ним поставьте 0 и сгруппируйте результат в четырехбитные подгруппы следующим образом:

| 0101 | 1011 | 2 = | 5 | Б | 16

Это 01011011 2 = 5Б 16 . Чтобы преобразовать 5B16 в десятичную систему счисления, выполните следующие действия:

5 х (16) 1 + Б х (16) 0 = 5 х 16 + В х 1 = 5 х 16 + 11 х 1 = 80 + 11 = 91 10

Справа от «[» в списке (таблице) стоит шестнадцатеричное число 5В и десятичное число 91.

Еще один пример: символ десятичного числа «5» представлен семью битами 0110101 по основанию 2, и нет 0000101 в базе 2. Чтобы преобразовать 0110101 2 до основания 16, перед ним поставьте 0 и сгруппируйте результат в четырехбитные подгруппы следующим образом:

| 0011 | 0101 | 2 = | 5 | Б | 16

Это 00110101 2 = 35 16 . Чтобы преобразовать число 3516 в десятичное, выполните следующие действия:

3 х (16) 1 + 5 х (16) 0 = 3 х 16 + 5 х 1 = 3 х 16 + 5 х 1 = 48 + 5 = 53 10

Справа от «5» в списке (таблице) стоит шестнадцатеричное число 35 и десятичное число 53.

Поскольку компьютер работает в байтах, при нажатии клавиши на идеальной клавиатуре в микропроцессор (материнскую плату) отправляются восемь битов. Идеальная клавиатура – ​​это периферийное устройство, отделенное от системного (базового) блока компьютера. Он имеет электронную схему (IC), которая создает семь битов и ставит перед ними ноль перед отправкой по кабелю на материнскую плату системного блока. Из входного порта (входной цепи) материнской платы он поступает в микропроцессор, который также находится на материнской плате. От микропроцессора он поступает в память, которая также установлена ​​на материнской плате.

Итак, при нажатии клавиши «N» на идеальной клавиатуре в микропроцессор передаются восемь бит 01001110. Из микропроцессора они передаются в память, где остаются в памяти в виде байта. Программист должен иметь в виду, что восемь бит числа 01001110 2 то же самое, что и 4Е 16 это то же самое, что 78 10 .

При нажатии клавиши «[» на идеальной клавиатуре восемь бит 01011011 передаются в микропроцессор. Из микропроцессора они передаются в память, где остаются в памяти в виде байта. Программист должен иметь в виду, что восемь бит числа 01011011 2 то же самое, что и 5Б 16 это то же самое, что 91 10 .

При нажатии клавиши «5» на идеальной клавиатуре в микропроцессор передаются восемь битов 00110101 в виде символа, а не десятичного числа. Из микропроцессора они передаются в память, где остаются в памяти в виде байта. Программист должен иметь в виду, что восемь битов 00110101 2 то же самое, что 35 16 это то же самое, что 5310 10 .

Бывают случаи, когда программа работает и ожидает ввода в компьютер десятичного числа 5. В этой ситуации, если нажать клавишу «5» на идеальной клавиатуре, в микропроцессор все равно передается восьмибитный код 00110101. Поскольку требуется десятичное число 5, а не символ «5», фрагмент кода (короткая программа) из памяти использует микропроцессор для преобразования кода символа 00110101 по основанию два в дополнительный номер до двух 00000101. 2 перед отправкой его в ячейку памяти как байт с дополнением до двух. Программист должен иметь в виду, что 00000101 означает 5 10 в базе 2 и отличается от кодового номера 00110101. 2 , 35 16 , и 53 10 что означает символ «5». Чтобы отобразить в памяти дополнение до двух чисел 00000101, другая короткая программа должна преобразовать 00000101 из памяти в 00110101. Это 00110101, что то же самое, что 35. 16 это то же самое, что 53 10 который отображается на мониторе (или распечатывается на бумаге принтером).

3.9 Формат чисел с плавающей запятой

Число без десятичной части является целым. Число 36 — целое число. 36,375 не является целым числом. Это десятичное число с десятичной частью. Десятичная часть числа 0,375 — это дробь меньше 1.

36,375 интерпретируется в десятичной форме как:

Сейчас:

Итак, 100100 2 = 3610, что является целой частью числа 36,375. 10 .

Сейчас:

Итак, 0,011 2 = 0,375 10 что является десятичной частью числа 36,375 10 .

∴ 36 375 10 = 100100,011 2

Скажем по-другому:

100100.011 2 = 36 375 10

Числа представлены в компьютере по основанию 2, а не по основанию 10, при этом все равны. Поскольку ячейка регистра микропроцессора или ячейка памяти может принимать только 1 или 0, места для хранения десятичной точки не существует. Это создает проблему. В качестве разрешения используется 32-битное представление с плавающей запятой одинарной точности IEEE-754 и 64-битное представление с плавающей запятой двойной точности IEEE-754.

32-битный формат чисел с плавающей запятой
Число 100100.0112 можно выразить как:

100100.011 2 = 1,00100011 2 х 2 +5

Правая часть символа = в математике называется стандартной формой по основанию два левой части числа 100100,011. 2 .

Теперь 00100011 из 1.00100011 2 справа от символа =, без предшествующей «1». и без 2 в качестве основания называется явной мантиссой. В этом случае двоичная точка перемещается на пять позиций левее, чтобы получить цифру «1». Не путайте десятичную и двоичную точку. Двоичная точка соответствует основанию 2, а десятичная точка — 10. «1». за которым следует 00100011 в правой части символа =, без 2 в основании, образует истинное мантиссу. Однако 1,00100011 называется неявной мантиссой.

После мантиссы в правой части стоит «x 2 +5 ' выражение. В этом выражении +5 называется показателем степени. Знак плюс означает, что двоичную точку необходимо переместить на пять позиций вперед, чтобы она заняла нормальное исходное положение, а 2 — это основа нумерации. Предыдущее уравнение можно записать в обратном виде:

1.00100011 2 х 2 +5 = 100100,011 2

В 32-битном представлении с плавающей запятой это «1.00100011». 2 х 2 +5 », а не просто «100100.011». 2 ». 2 по основанию не записывается. 32-битное представление с плавающей запятой для «1.00100011». 2 х 2 +5 число, равное 36,375 10 = 100100,011 2 , показано в следующей таблице:

Существуют 32-битные позиции, которые нумеруются с правого конца, начиная с 0. Первый бит на левом конце — это знаковый бит. Если число положительное, этот бит равен 0. Если число отрицательное, этот бит равен 1 (-1 состоит из двух символов и не может помещаться ни в одну ячейку). 1.00100011 2 х 2 +5 что равно 36,375 10 что также равно 100100,011 2 является положительным числом. Итак, первый бит равен 0.

Для экспоненты имеется восемь битовых позиций, начиная с позиции 30 по позицию 23 включительно. Однако показатель степени, который там написан, равен 10000100. 2 что равно 132 10 . Показатель интересующего числа на самом деле равен +5 по основанию двойки. Итак, что происходит?

Теперь в 32-битном формате показатель степени 0 записывается как 01111111. 2 что равно 127 10 . +5 10 +101 2 . Итак, придя к 10000100 2 в экспоненциальной части таблицы 101 2 добавлен в 01111111 2 , соответственно. Это значит, что к 127 прибавили 5, чтобы получилось 132. 10 .

Мантисса без «1» занимала позиции с 22 по 15 включительно. Обратите внимание, что 1 из «1». не было указано в 32-битной строке. Это никогда не указывается – примите это. Остальные ячейки до позиции 0 заполняются нулями.

Если фактический показатель степени равен -5, то из 127 вычитается 5. 10 иметь 122 10 . Это соответствует вычитанию 101 2 от 01111111 2 иметь 01111010 2 .

На всех предыдущих иллюстрациях число +1 равно 1,0 х 2. 0 = 1,0 x 1 = 1,0 представляется как:

Обратите внимание, что цифра «1». 1,0 х 2 0 в формате не указано. Это никогда не указывается. Следующая смешанная дробь, имеющая положительный результат после 1,0:

Обратите внимание на цифру 1 в правом конце. Это представление представляет собой число:

Разница между 1.0000001192092896 и 1.0 составляет:

1,0000001192092896 – 1,0 = 0,0000001192092896

Числа с десятичной частью являются смешанными дробями. Не все дроби между 1 10 и 2 10 можно представить на компьютере. Можно предположить, что наименьший дробный разрыв между последовательными смешанными числами в 32-битном формате с плавающей запятой равен 0,0000001192092896. Ожидайте, что интервал двойной точности будет меньше. См. следующий рисунок.

Представляя число, 0,0 не соответствует предыдущим аргументам. Представление для 0.0 объявлено и должно быть изучено как таковое. Чтобы представить 0,0, все ячейки мантиссы равны 0, а все ячейки показателя степени также равны нулю. Знаковый бит может быть 0 или 1. К сожалению, это приводит к положительному 0 и отрицательному 0 следующим образом:

В реальной жизни есть только один ноль. Положительного 0 и отрицательного 0 не существует. Однако 0 обычно считается положительным. Положительный 0 и отрицательный 0 существуют здесь из-за этого конкретного описания формата. Числовая прямая (см. выше) также может иметь +0 и -0, но существует только один ноль.

64-битный формат чисел с плавающей запятой
64-битный формат с плавающей запятой аналогичен 32-битному формату, но со следующими отличиями:

  • Для представления числа существует 64 бита.
  • После знакового бита имеется 11 бит для номера экспоненты.
  • Показатель степени для нулевого индекса (2 0 ) составляет 1023 10 = 01111111111 2 .
  • За одиннадцатью битами следуют 52 бита явной мантиссы.
  • Он имеет более широкий диапазон чисел, чем 32-битный формат.

Обратите внимание, что цифра «1». то есть в начале мантиссы все еще не входит в число 64 бит, так же как оно не входит в число 32 бит для 32-битного формата.

Одним из наиболее важных различий между 64-битным форматом и 32-битным форматом является то, что разница между последовательными смешанными дробями в 64-битном формате меньше, чем в 32-битном формате.

В 64-битном формате интервал (промежуток) между 1,0 и следующей смешанной дробью можно рассчитать следующим образом:

1.0 это

0 01111111111 00000000000000000000 00000000000 000000000000000000000 2

Это эквивалентно «1.», которая не была указана в строке, умноженной на 2, возведенной в степень (индекс) 0 (с показателем степени 1023). 10 = 01111111111 2 для 2 0 = 1). Строка 1,0 x 2. 0 .

Следующая смешанная дробь больше 1,0:

0 01111111111 00000000000000000000 00000000000 000000000000000000001 2

Это эквивалентно «1». который не указан в строке, за которым следует 51 ноль, а затем 1, умноженная на 2, возведенная в степень 0 (при показателе степени 1023 10 = 011111111112 2 для 2 0 = 1). Это то же самое, что:

+2 0 × (1 + 2− -52 ) ≈ 1,0000000000000002

Знак ≈ означает примерно равно.

Сейчас:

1,0000000000000002 – 1,0 ≈ 0,0000000000000002

Соответствующее значение интервала для 32-битного формата составляет 0,0000001192092896 ≈ 0,00000012.

0,0000000000000002 намного меньше, чем 0,00000012. Таким образом, в 64-битном формате смешанных дробей между двумя последовательными целыми числами (например, 3 и 4) гораздо больше, чем между двумя последовательными целыми числами в 32-битном формате.

Количество смешанных дробей между двумя последовательными целыми числами на числовой прямой бесконечно. Таким образом, ни один формат (например, 32-битный или 64-битный) не может предоставить все смешанные дроби между любыми двумя последовательными целыми числами (целыми числами). Чем меньше промежуток (интервал) между двумя последовательными целыми числами, предусмотренными форматом (например, 32-битным или 64-битным), тем больше количество смешанных дробей между последовательными целыми числами (для числовой строки).

Причины, по которым 64-битный формат описывается как двойная или более высокая точность по сравнению с 32-битным форматом, заключаются в том, что интервал между двумя последовательными смешанными дробями, ограниченными двумя последовательными целыми числами, для 64-битного формата меньше, чем соответствующие 32. -битовый интервал формата. Кроме того, для 64-битного формата существует больше возможных смешанных дробей между двумя ограниченными целыми числами, чем, соответственно, для 32-битного формата.

Преобразование десятичной части (дроби) десятичного числа в двоичную часть
36,375 — это десятичное число с десятичной частью «.375». Десятичная часть «.375» — это дробь между нулем и единицей. Число 0,5 в десятичной системе равно значению 1/2 во второй системе. 0,5 10 что выражается с помощью расширения по основанию два:

Это не 0,101 2 что означает 0,625 10 . Десятичная часть десятичного числа имеет эквивалентную двоичную часть для соответствующего двоичного числа. Итак, чтобы преобразовать десятичное число, например 36,375 10 в двоичное основание преобразуйте 36 в двоичное число, а затем преобразуйте .375 также в двоичное число. Затем соедините оба результата с помощью двоичной точки. Методы преобразования этих двух разделов различны. Как преобразовать десятичное целое число в основание 2, объясняется в главе 1.

Чтобы преобразовать десятичную дробь в двоичную дробь, выполните следующие действия:

  • Умножьте десятичную дробь (десятичную часть) на 2. Полученное в результате целое число является первой двоичной цифрой.
  • Повторите предыдущий шаг с дробным десятичным результатом, чтобы получить следующую двоичную цифру.
  • Продолжайте повторять предыдущий шаг до тех пор, пока результат десятичной дроби не станет 0,0000—.

Пример. Преобразование дробной части числа 36,375. 10 к эквивалентной дробной части по основанию два.

Решение:

Обратите внимание, что на третьем этапе 0,500 было умножено на 2, а не на 1,500. Соответствующая двоичная дробь читается в последнем столбце сверху. И так, следующий результат:

.375 10 = 0,011 2

Преобразование двоичной части (дроби) двоичного числа в десятичную часть
Для этого разложите двоичную дробь по обратным степеням 2.

Пример. Преобразование дробной части числа 100100,011. 2 эквивалентной дробной части по десятичной системе счисления.

Решение:

3.10 Числовые префиксы в вычислительной технике

В обычной жизни 1 килограмм означает 1000, что сокращается буквой k (строчная), как 1 кг. В вычислениях 1 килограмм означает 2 10 = 1024, но обозначается буквой K (заглавными буквами), например 1 Кбит. В обычной жизни 1 мега означает 1 000 000, что обозначается буквой М (заглавными буквами), как 1 Мг. В вычислительной технике 1 мега означает 2 двадцать = 1 048 576 = 2 10 х 2 10 = 1024 x 1024 = 1 048 576 и по-прежнему обозначается буквой M (заглавными буквами), как 1 Мбит. В обычной жизни 1 гига означает 1 000 000 000, сокращенно G (заглавные буквы), как 1Gg. В вычислениях 1 гига означает 2 30 = 1 073 741 824 = 2 10 х 2 10 х 2 10 = 1024 x 1024 x 1024 = 1 073 741 824 и по-прежнему обозначается буквой G (заглавными буквами), как 1 Гбит. В следующей таблице дано значение четырех префиксов в обычной жизни и при работе на компьютере:

3.11 Проблемы

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

  1. Нарисуйте числовую линию с целыми числами от -10 до +10.
  2. Сложите следующие двоичные числа в 8-битном дополнении до двух: 101010. 2 и 1111 2 .
  3. Используйте только метод дополнения до двух в 8-битах, чтобы вычесть двоичное число 1111. 2 из двоичного числа 101010 2 .
  4. Найдите произведение 10110 2 х 1101 2 в базе два.
  5. Разделить 36 375 10 на 1000 10 в десятичном и двоичном формате и сравните результаты.
  6. Используйте 8 бит по вашему выбору, чтобы проиллюстрировать логические операции «И», «ИЛИ», «Исключающее ИЛИ», «Инвертировать», «Сдвинуть вправо», «Сдвинуть влево», «Повернуть вправо» и «Повернуть влево». Каждый байт должен содержать смесь 1 и 0.
  7. а) Напишите цифровой код нулевого символа ASCII в шестнадцатеричном, двоичном и десятичном формате.
    б) Запишите цифровой код символа ASCII «1» в шестнадцатеричном, двоичном и десятичном формате.
    в) Напишите цифровой код ASCII-символа «А» в шестнадцатеричном, двоичном и десятичном формате.
    г) Напишите цифровой код ASCII-символа «а» в шестнадцатеричном, двоичном и десятичном формате.
  8. Перевести 49,49 10 в базу два. Преобразуйте результат в 32-битный формат с плавающей запятой IEEE.
  9. а) Чем 64-битный формат с плавающей запятой IEEE отличается от 32-битного формата?
    б) Назовите две взаимосвязанные причины, по которым 64-битный формат описывается как формат двойной или более высокой точности по сравнению с
    32-битный формат.