|
Ушел с форума
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,761
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 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
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Новые блоги и статьи
|
|||
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов
Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
|
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация
В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
|