|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,762
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 10.11.2013, 17:19 [ТС] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ГЛАВА 2 ПРЕДСТАВЛЕНИЕ ДАННЫХ (часть 2/4) Почему в байте именно 8 бит? Ранние ЭВМ имели размеры машинных слов и байтов, отличные от 8 бит, как правило, кратные шести. В 1950-х–1960-х годах многие ЭВМ использовали 6-битную кодировку символов, поэтому длина байта была первоначально кратна шести битам. Восемь бит в байте использовалось в IBM System/360. Это стало стандартом де-факто. С начала 1970-х в вычислительной технике используют байты, состоящие из 8 бит, и машинные слова, кратные 8 битам. Появление 8-битных байтов у System/360 связано, вероятно, с использованием BCD-форматом представления числа (BCD — binary-coded decimal — двоично-десятичный код): по 4 бита на каждую цифру (0-9), таким образом один байт представлял две десятичные цифры. В System/360 были специальные инструкции для обработки данных такого формата, для представления BCD было бы трудно использовать 6-битные байты, поэтому 8 бит в байте стало наилучшим решением. По другой версии, 8-битный размер байта связан c 8-битным числовым представлением символов в кодировке EBCDIC: один байт — один символ. Остается удивляться прозорливости пиратов, которые в XVII веке назвали битом именно 1/8-ю монеты!Группа из 16 взаимосвязанных бит (двух взаимосвязанных байт) называется машинным словом (WORD). Соответственно группа из четырех взаимосвязанных байтов (32 бита или два слова) называется удвоенным словом (DOUBLE WORD). Группа из восьми байтов (64 бита или два удвоенных слова) — учетверенным словом (QUADRUPLE WORD), группа из 16 байтов (128 бит или два учетверенных слова) — параграфом (PARAGRAPH) или двойным учетверенным словом (DOUBLE QUADRUPLE WORD), группа из 4096 байтов (256 параграфов) — страницей памяти (MEMORY PAGE) (таблица 2.1.4). Термины «бит», «байт» и «слово» используются для описания как элементов данных, которые обрабатывает компьютер, так и элементов памяти. Типы данных В общем случае под целое число можно отвести любое число соседних битов памяти, однако система команд компьютера поддерживает работу с числами размером в байт, слово, двойное слово. Поэтому целые числа представляются только байтом, словом, двойным словом и так далее.
Представление отрицательных двоичных целых чисел Рано или поздно возникает потребность представлять в двоичном коде отрицательные числа. А как в двоичной системе представить отрицательное число, если мы не можем использовать для этой цели минус как в традиционной десятичной системе? Как, например, должно выглядеть в двоичной системе -1? По определению, для каждого натурального числа n существует одно и только одно отрицательное число, обозначаемое -n, которое дополняет n до нуля: n + (-n) = 0. Найдем такое 4-битное число, которое при сложении с числом 5 (0101b) дало бы нам ноль, переносом в 5-й бит мы пренебрегаем (рис 2.2.1).рис 2.2.1
Рис. 2.2.2. Форматы представления целых чисел Дополнительный код
Способ первый — классический: взять число в прямом коде, преобразовать его в инверсный код. Для этого все нули этого числа необходимо заменить на единицы, а единицы на нули. К числу в инверсном коде добавить 1. На рис. 2.2.3 пример преобразования числа +7 в –7. Рис. 2.2.3 256 – 7 = 249 = 1111 1001b = 0F9h = – 7. Способ третий — студенческий: щелкаем по клавише «Пуск», открываем стандартные приложения, запускаем калькулятор в режиме инженерный, теперь щелкаем по клавише 7 и «+/–» на экранчике калькулятора появится –7. А теперь жмем на клавишу F8 или мышкой по переключателю с надписью «Bin». Что мы видим на экране калькулятора? Число 11111111111111111111111111111001b. Многовато, на экране — двойное слово. Жмем на F4 или мышью по переключателю с надписью Byte. Наше число приобрело нормальный вид 11111001b. На самом деле, нет необходимости пересчитывать отрицательные числа. Вы пишете –7, а транслятор автоматически подставит туда, где нужно число 11111001b. Если мы пренебрегаем знаковым разрядом, то диапазон чисел увеличивается в 2 раза: Попрактикуемся и найдем 8-битный эквивалент –5: 0000 0101b двоичное представление +5. 1111 1010b инвертируем все биты. 1111 1011b добавляем 1. Проделаем обратное преобразование: 1111 1011b двоичное представление –5. 0000 0100b инвертируем все биты. 0000 0101b добавляем 1 и получаем +5. А теперь поэкспериментируем с 16-битными положительными и отрицательными числами: 7FFFh (+32767, наибольшее 16-битное положительное число), 4000h (+16384), 0 и 8000h (–32768, наименьшее 16-битное отрицательное число). Получим отрицательные эквиваленты чисел: 0111 1111 1111 1111b 7FFFh (+32767) 1000 0000 0000 0000b инвертируем все биты (8000h) 1000 0000 0000 0001b добавляем 1 (8001h или –32767) 0100 0000 0000 0000b 4000h (16384) 1011 1111 1111 1111b инвертируем все биты (0BFFFh) 1100 0000 0000 0000b добавляем 1 (0C000h или –16384) 0000 0000 0000 0000b 0 1111 1111 1111 1111b инвертируем все биты (0FFFFh) 0000 0000 0000 0000b добавляем 1 (0) «Ноль» — он и в Африке «ноль». Получим положительный эквивалент числа 8000h: 1000 0000 0000 0000b 8000h (–32768) 0111 1111 1111 1111b инвертируем все биты (7FFFh) 1000 0000 0000 0000b добавляем 1 (8000h или –32768). После смены знака число 8000h не изменилось! –(–32768)=–32768. Почему? Дело в том, что число +32768 нельзя представить как 16-битное число со знаком (вспомните, то же самое у нас получилось с четырехбитным числом 8). При выполнении операции смены знака у числа –32768 микропроцессор x86 выставит признак арифметического переполнения. Расширение знака и расширение нуля Возьмем десятичное число –64. Ему соответствует 8-битное число 0C0h, 16-битное 0FFC0h и 32-битное 0FFFFFFC0h. Для числа +64 8-битный эквивалент 40h, 16-битный — 0040h и 32-битный — 00000040h.Примеры расширения знака Разницу между 8 и 16/32/64-битными эквивалентами можно выразить следующими словами: «если число отрицательное, то слева к 8-битному эквиваленту дописывается 0FF/0FFFFFF/0FFFFFFFFFFFFFF, а если число положительное, то к 8-битному числу слева дописываются нули» или, другими словами, происходит «растягивание» знакового бита.
Если мы рассматриваем беззнаковое десятичное число 128, то ему соответствует 8-битное число 80h, 16-битное — 0080h и 32-битное — 00000080h. Для расширения 8-битного числа до 16/32/64-битного к нему слева дописывают недостающие нули, происходит «расширение нуля». Примеры расширения нуля Иногда, для сокращения размера кода команд, вместо 32-битного числа используют его 8-битный эквивалент, но это можно проделать лишь с ограниченным диапазоном чисел от –128 до +127.
0FFFFFF80h (–128) можно сократить до 8 бит (80h) 00000040h (+64) можно сократить до 8 бит (40h) 0FFFFFE40h (–448) нельзя сократить до 8 бит 00000100h (+256) нельзя сократить до 8 бит. Представление чисел с плавающей запятой У десятичных чисел каждая позиция числа соответствует степени числа 10, то есть число 1234,56=1*103+2*102+3*101+4*100+5*10-1+6*10-2.Запятая показывает границу между позицией, соответствующей 100, и дробной частью. В дробной части позиции числа также являются степенями числа 10, но эти степени теперь отрицательные. Дробные двоичные числа записываются аналогично дробным десятичным, но основание системы счисления здесь 2, а не 10. Например, Чтобы получить эквивалент целого числа в двоичной системе, мы использовали последовательное деление на 2. Чтобы получить эквивалент десятичной дроби, используем обратную операцию — последовательное умножение на 2. Для перевода десятичной дроби в двоичную систему можно использовать три способа, а уж который из них Вам покажется более удобным — выбирайте сами. Способ первый. Дробную часть числа последовательно умножают на 2 пока либо дробная часть не станет равной нулю, либо не будет получено необходимое количество разрядов. Целые значения, получаемые при умножении, будут являться эквивалентом десятичной дроби в двоичной системе. Посмотрите конкретный пример на рис. 2.4.1. рис. 2.4.1 Способ третий. Любое дробное двоичное число можно представить как x1*0,5 + x2*0,25 + x3*0,125 +…, где x1, x2, …xn — нули или единицы, то есть 0,1=0,0001100b.Способ четвертый. Переведем в двоичную систему, например, число 0,27=27/100. Ближайшая к 100 степень двойки 27=128. Перевод десятичного дробного числа 0,406 в hex-систему делается аналогично переводу к двоичному виду: Для перевода вещественного целого числа в двоичную или hex-систему необходимо целую и дробную часть перевести по отдельности в двоичную или hex-систему, а затем соединить их. Например, число Существует два способа записи вещественных чисел: Первый способ — целая часть числа отделяется от дробной символом запятой, расположенной между конкретными разрядами в фиксированной позиции. Такой способ записи называют представлением вещественных чисел с фиксированной запятой. Если отвести под целую часть числа 8 разрядов, а под дробную 8 разрядов, то максимально большое число, которое можно записать таким способом: Второй способ применяется в астрономии, физике, химии, математике для записи очень больших либо очень маленьких чисел. Например, скорость света в вакууме составляет около Если под мантиссу отвести 8 разрядов и 8 разрядов под порядок числа (из 8 разрядов 1 разряд отводится под знак и 7 разрядов под число), то максимально возможное наибольшее число Для представления в компьютере дробного числа первый разряд числа считается знаковым и обозначает знак мантиссы. За ним следует мантисса (число со значением больше или равным 1 и меньшим 2) и порядок (степень числа 2). Представление чисел в виде мантиссы и порядка позволяют сводить умножение и деление чисел к сложению и вычитанию показателей степеней, а возведение в степень и извлечение корня — к умножению и делению на показатель степени, что упрощает и сокращает сложные вычисления. Вещественные числа в памяти компьютера хранятся в нормализованном виде, то есть оно обязательно должно иметь следующий вид: Из-за того, что целая часть вещественного числа в двоичной системе всегда равена 1, его, из соображений увеличения разрядности числа, предпочитают «хранить в уме». Для упрощения вычислений значение порядка хранят не в дополнительном коде (то есть не в виде целого со знаком), а в смещенном коде (таблица 2.4.1) в виде суммы с некоторым числом, это позволяет облегчить сравнение вещественных чисел — в большинстве случаев достаточно сравнить их экспоненты. Обратите внимание, что в смещенном порядке у отрицательных чисел и нуля в двоичном представлении старший разряд нулевой. В смещенном коде число суммируется с константой, которая для N-битного кода равна 2N-1-1.
Преобразуем вид числа 4341C000h в бинарное представление:
Рис. 2.4.2. Форматы представления вещественных чисел
Для записи вещественного числа в программе пересчет вещественного десятичного числа из десятичной системы в hex или двоичную самому делать не обязательно, просто запишите число, используя в качестве разделителя точку вместо запятой:
Теперь читателю предлагается потренироваться в переводе чисел. Пред вами два простых примера: 0.125 и 0.625. Можно усложнить их: 23.125 и 456.625. Проверьте свои ответы, записав результат в переменную типа dword, и посмотрев под отладчиком число в стеке FPU. Автор настаивает на такой практике, даже если вы не новичок. Битовое поле Непрерывная последовательность бит, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита и содержать до 32 бит.
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Новые блоги и статьи
|
|||
|
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю
Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы
Кратко. . .
|
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем
**Полевые заметки о двухнедельной совместной работе**. . .
|
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|