Галерея диаграмм связей Глава 2. Представление данных и работа с ними
Это интеллектуальная карта представления и работы с данными из главы 2, включая систему счисления и кодирование, методы работы и схемы операций, представление и работу с числами с плавающей запятой и т. д.
Отредактировано в 2024-01-16 15:53:26Глава 2. Представление данных и работа с ними
Представление данных и операции
Система счисления и кодирование
Преобразование между различными базовыми числами
Преобразовать десятичное число в произвольное базовое число
Деление по основанию и методу остатка (преобразование целой части)
Метод округления по базе умножения (преобразование десятичной части)
Думайте вместе с формулами числового представления чисел с основанием r, а не запоминайте их наизусть.
Исходный код, дополнительный код, инверсный код, кадровый код
Исходное представление кода
Знаковый бит положительных чисел представлен 0, знаковый бит отрицательных чисел представлен 1, а бит значения остается неизменным.
дополнять представление
Два способа найти дополнение отрицательного числа
Метод дополнительного кода: когда x ≤ 0, бит знака равен 1, бит дополнительных данных равен биту данных истинного значения, который инвертируется побитно, а последний бит добавляется на единицу. Этот метод можно доказать с помощью. сравнение комплемента и формул комплемента.
Метод сканирования: когда x ≤ 0, знаковый бит равен 1, а биты данных истинного значения сканируются последовательно справа налево. Первая 1 справа и 0 справа остаются неизменными, а остальные биты инвертируются.
дополнительная запись
Знаковый бит такой же, как исходный код. Когда истинное значение является положительным числом, дополнительный код такой же, как исходный код, когда истинное значение является отрицательным числом, бит значения дополнительного кода является инверсией; бита истинного значения.
обозначение сдвига кадра
Сдвиг кадра и дополнение истинного значения отличаются только одним битом знака.
диапазон представления чисел с фиксированной точкой
Арифметические методы и арифметические схемы
оператор
Арифметико-логическое устройство (АЛУ)
ALUop — это терминал управления операциями, который используется для определения функций обработки, выполняемых ALU.
внутренние принципы
Все схемы логических и арифметических операций работают одновременно, и результаты нескольких операций отправляются на вход мультиплексора соответственно, и AluOp выбирает один из выходных результатов.
Базовая структура оператора
Оператор единой структуры шины
Чтобы избежать конфликтов данных, по шине одновременно могут передаваться только одни данные, но у АЛУ есть два операнда. По этой причине на входном конце АЛУ необходимо установить два буферных регистра, LA и LB.
Для завершения работы двух операндов регистра общего назначения и обратной записи результата требуется 3 такта.
В первом такте операнд общего регистра отправляется в LA Ri→ IB1, IB1 → LA. При поступлении тактового триггера действие по отправке операнда в LA завершается.
Второй такт должен завершить операцию отправки еще одного операнда регистра общего назначения в LB, и должны быть поданы сигналы Ri→ IB1, IB1 → LB.
Третий тактовый цикл требует сигнала управления выбором операции AluOp и сигнала управления обратной записью в общий регистр IB1 → Ri.
Оператор двойной структуры шины
Чтобы предотвратить прямую отправку выходных результатов АЛУ на шину IB1 и возникновение конфликтов данных, между выходом АЛУ и шиной IB1 устанавливается буферный регистр L для временного хранения результатов операции.
Для завершения операции требуется два такта
Первый тактовый цикл дает сигналы Ri→ IB1 и Ri→ IB2 для вывода двух операндов регистра соответственно. В то же время подается сигнал управления работой ALU AluOp для управления данными для выполнения правильных операций. Когда тактовый сигнал поступает, операция выполняется. результаты будут автоматически записаны в буфер в регистре L.
Второй тактовый цикл отправляет данные в L на шину IB1, выдавая сигналы L → IB1, IB1 → Ri, и при взаимодействии тактового сигнала данные записываются обратно в общий регистр.
Оператор трехшинной структуры
Целью обхода является передача данных между регистрами общего назначения минуя АЛУ.
Структура с тремя шинами может одновременно обеспечивать сигналы Ri → IB1, Ri → IB2, AluOp, IB3 → Ri и завершать операцию с помощью тактовых циклов. Вся операция требует только одного тактового цикла.
Скорость является самой высокой среди трех структур и не требует буферных регистров, но его общий файл регистров должен обеспечивать два порта чтения и один порт записи.
Операции сдвига с фиксированной точкой
арифметический сдвиг
Объектом арифметического сдвига является число со знаком, причем знаковый бит остается неизменным во время процесса сдвига.
Сдвиг на один бит влево эквивалентен умножению на 2, если переполнения не происходит.
Сдвиг на одну позицию вправо эквивалентен делению на 2, если не учитывать последнюю округленную в результате сдвига цифру.
Знаковый бит арифметического сдвига всегда неизменен!
Условием определения переполнения операции арифметического сдвига является: арифметический сдвиг исходного кода влево на 1 или дополнительный арифметический сдвиг влево смещает бит на противоположный знак.
логический сдвиг
Логические сдвиги рассматривают операнды как беззнаковые числа.
Правила сдвига: когда логика сдвигается влево, старший бит смещается, а младший бит добавляется с 0; когда логика смещается вправо, младший бит смещается, а старший бит добавляется с 0.
круговой сдвиг
Сложение и вычитание чисел с фиксированной точкой
Операции сложения и вычитания дополнения до двух
Добавьте n инверторов на вход Y исходного сумматора, чтобы реализовать функцию инвертирования каждого бита, а затем добавьте мультиплексор 2-к-1, управляемый управляющим терминалом Sub, чтобы выбрать исходный код Y для ввода в Или инвертируйте каждый бит Y и введите его в сумматор, а затем одновременно отправьте терминал управления Sub на сумматор в качестве переноса младшего бита.
Обнаружение переполнения Переполнение возможно только при сложении двух чисел с одинаковым знаком.
(1) Обнаружение на основе согласованности знакового бита операнда и результата операции.
Оно переполняется, когда положительное становится отрицательным, а отрицательное становится положительным.
(2) Определить, согласован ли перенос старшего бита данных и знакового бита во время операции.
Когда перенос старшего бита данных несовместим с переносом знакового бита во время операции, результат операции переполняется.
(3) Используйте биты с двойным знаком.
Самый старший бит знака представляет фактический знак.
Пример переполнения операции на языке C
Операции умножения и деления с фиксированной точкой
Умножение с фиксированной точкой
Однобитовое умножение исходного кода
Умножение с дополнением до единицы (алгоритм Бута)
Операция деления с фиксированной точкой
Исходная операция разделения кода (метод остатка без восстановления)
Операция деления дополнения до двух (метод попеременного сложения и вычитания)
Целочисленные типы и преобразование типов в языке C
Преобразование знаковых и беззнаковых чисел
Значения битов сохраняются неизменными, меняется только способ интерпретации битов.
Преобразование между целыми числами разной длины слова
Когда переменная с большой длиной слова принудительно вводится в переменную с небольшой длиной слова, система напрямую отсекает избыточные старшие биты и напрямую присваивает младшие биты.
При преобразовании из короткого слова в длинное слово необходимо не только выровнять соответствующие значения битов, но и расширить старшую часть.
Если исходное число представляет собой целое число без знака, оно расширяется нулями, а старшие части после расширения заполняются нулями.
В противном случае выполняется расширение знака, и расширенная старшая часть заполняется знаковым битом исходного числа.
Суть заключается в расширении знака дополнительного кода.
Хранение и организация данных
Хранение данных с прямым порядком байтов и прямым порядком байтов.
Машинный номер переменной типа int i равен 01 23 45 67H, ее старший байт MSB=01H, а ее младший байт LSB=67H.
Данные хранятся в режиме «выровнено по границам».
выравнивание границы
Границы не выровнены
Для данных длиной в один байт нет проблем с выравниванием границ.
Представление и операции с числами с плавающей запятой
Представление чисел с плавающей запятой
Нормализация чисел с плавающей запятой
Правило левой руки: Когда старшая цифра мантиссы результата операции не является значащей цифрой, то есть имеет вид ±0,0…0x…x, требуется правило левой руки. В правиле левой руки каждый раз, когда мантисса сдвигается на одну позицию влево, код экспоненты уменьшается на 1 (когда основание равно 2). Левое правило, возможно, придется выполнить несколько раз.
Правосторонний расчет: если значащая цифра мантиссы результата операции предшествует десятичной запятой, требуется правый расчет. Сместите мантиссу вправо на одну позицию и прибавьте к показателю 1 (когда основание равно 2). Когда вам нужно отрегулировать правильное направление, вам нужно сделать это только один раз.
стандарт IEEE754
IEEE754 сложение и вычитание чисел с плавающей запятой
(1) В процессе нормализации суммы заказа операция кода заказа принимает правила операции сложения и вычитания сдвига кадра.
«Маленькие шаги должны сопровождаться большими шагами»
(2) Работа мантиссы принимает исходные правила работы кода, и скрытые биты должны участвовать в операции мантиссы.
(3) Скрытые биты участвуют в оценке нормализации мантиссы и процессе нормализации мантиссы.
Если мантисса имеет вид 1......., это стандартизированная мантисса.
Если мантисса имеет вид 1×.…, ее необходимо один раз нормализовать вправо, то есть мантисса смещается вправо на одну позицию и код показателя степени увеличивается на 1.
Если мантисса имеет вид 0..., нужно нормализовать ее влево, сдвинуть мантиссу влево и каждый раз смещать мантиссу влево на 1 бит, и при этом уменьшить показатель степени на 1, пока мантисса не примет форму 1...
(4) Обработка округления. В IEEE754 в основном используются следующие методы округления.
Последний бит всегда устанавливается в 1: пока один из битов, потерянных из-за сдвига, равен 1, младший бит результата операции устанавливается в 1, независимо от того, был ли младший бит изначально равен 0 или 1.
Метод округления 0–1: если старшая цифра пропущенной цифры равна 1, прибавьте 1 к последней цифре мантиссы, аналогично округлению десятичных чисел.
Метод усечения: непосредственно перехватить необходимое количество цифр и отбросить все последующие цифры. Этот процесс округления является самым простым.
(5) Решение о переполнении.
О переполнении операций с плавающей запятой можно судить по переполнению кода экспоненты. Для чисел с плавающей запятой одинарной точности IEEE754 переполнение нормализации происходит, когда нормализация вправо приводит к тому, что показатель степени становится равным 1 (то есть 11111111, истинное значение равно 128). Недополнение нормализации происходит, когда нормализация влево приводит к тому, что показатель степени становится нулевым.
Для операций с плавающей запятой переполнение экспоненты означает, что результат операции переполняется.
Операции, которые могут вызвать переполнение
Правостороннее и округление мантиссы. При округлении очень большой мантиссы может возникнуть переполнение мантиссы из-за прибавления 1 к последней цифре. В этом случае нужно подкорректировать мантиссу и упорядочить по правилу правой руки. Добавление 1 к правому порядку приводит к увеличению порядка, поэтому необходимо определить, произошло ли экспоненциальное переполнение.
Левое правило. Когда левое правило уменьшает порядок на 1, порядок уменьшается, поэтому необходимо определить, произошло ли экспоненциальное опустошение. Правило оценки аналогично правилу переполнения индекса. Если вы один раз повернете налево, код экспоненты будет уменьшен на 1, а затем будет оценено, равен ли весь код экспоненты 0, чтобы определить, не опустошается ли экспонента.
Переполнение индекса и опустошение индекса
Если положительный индекс превышает максимально допустимое значение (127 или 1023), происходит переполнение индекса и возникает исключение.
Если отрицательный показатель степени превышает минимально допустимое значение (-126 или -1022), происходит опустошение показателя степени, и результат обычно обрабатывается как машинный ноль.
Тип с плавающей запятой в языке C
Принудительное преобразование типов между int, float и double
двойной → плавающий
При преобразовании больших чисел может возникнуть переполнение, а при преобразовании чисел высокой точности может произойти округление.
плавающее/двойное → целое число
Десятичная часть будет округлена, и при преобразовании больших чисел может возникнуть переполнение.
плавающий → двойной
Поскольку ширина мантиссы и экспоненты данных типа double больше, чем у типа float, диапазон их представления больше, а точность выше. Преобразованные данные типа double полностью равны исходным данным типа float.
int→float
Оба типа имеют 32 бита, и число состояний, которые они представляют, одинаково. Данные, представленные двумя на числовой оси, не полностью перекрываются.
Тип float использует часть своего состояния для представления больших целых и десятичных чисел. Некоторые относительно большие целые числа типа int не могут быть точно представлены типом float.
Мантисса числа с плавающей запятой имеет в общей сложности 24 бита, включая скрытые биты. Если 24–31 бит целочисленных данных не равны 0, их невозможно точно преобразовать в мантиссу 24-битного числа с плавающей запятой. со временем произойдет прецизионное переполнение и потребуется обработка округления.
интервал → двойной
Поле мантиссы чисел с плавающей запятой имеет размер 53 бита и может точно представлять все 32-битные целые числа.