Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/2256: Рейтинг темы: голосов - 2256, средняя оценка - 4.63
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16374 / 7686 / 1080
Регистрация: 11.11.2010
Сообщений: 13,761
10.11.2013, 17:19  [ТС]
ГЛАВА 2
ПРЕДСТАВЛЕНИЕ ДАННЫХ
(часть 1/4)

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

Всякая электронная вычислительная машина имеет дело с числами и вычислениями, поэтому в первую очередь возникает вопрос, как представить числа в каком-то физическом виде.

В первых электронных вычислительных машинах это делалось путем изменения напряжения, и чем выше было напряжение, тем большему числу оно соответствовало. Такой принцип устройства вычислительных машин, называемый аналоговым, оказался малоудобным и ненадежным и вскоре на смену таким машинам пришли цифровые ЭВМ. В первых быстродействующих вычислительных машинах, созданных в США в начале сороковых годов XX века, использовалась десятичная арифметика. Но в 1946 г. в сыгравшем важную роль в развитии вычислительной технике отчете Артура У. Беркса (A.W. Burks), Германа Г. Гольдстайна (H.H. Goldstine) и Джона фон Неймана (J.von Neumann) о проекте первой вычислительной машины с хранимой в памяти программой были подробно изложены причины, которые обосновывали преимущества вычислителей с системой счисления по основанию 2. В основу этого доклада были положены не только теоретические обоснования, но и результаты работ, проводившихся со второй половины 30-х годов Джоном В. Атанасовым (J.V. Atanasoff) и Джорджем Р. Штибитцем (G.R. Stibitz) в США, Л. Куффигналом (L. Couffignal) и Р. Валтой (R. Valtat) во Франции, Гельмутом Шрейером (H. Schreyer) и Конардом Цузе (K. Zuze) в Германии по разработке первых электромеханических и электронных машин для выполнения арифметических операций с числами в двоичной системе счисления. После 12 лет работы с двоичными вычислительными машинами в статье В. Буххольца (W. Buchholz) «Fingers or First?» был выполнен анализ сравнительных достоинств и недостатков двоичной системы счисления. С тех пор вычислительная техника строится на схемах, которые находятся либо в одном состоянии, либо в другом — третьего не дано. Считается, что одно состояние соответствует «логическому нулю», а другое — «логической единице». Использование таких бистабильных схем (триггеров) для представления и хранения чисел заставляет перейти к системе, где счет идет двойками, а не десятками, как мы привыкли.

Бит (англ. bit — кусочек), распространенное на Вест-Индских островах название части разрубленной серебряной или золотой монеты. В XVIII веке это название перешло на мелкие испанские серебряные монеты. Пираты, чтобы расплатиться за мелкие услуги, когда у них не было мелких денег, разрубали дублон или пиастр на 8 частей и одна восьмая монеты называлась битом. Представим, что части монеты пронумерованы (рис. 2.1) и разрублено 8 монет.
Посчитайте сколько вариантов монеты (11111111, 11111112, ..., 88888888) можно собрать из таких битов? Число размещений с повторениями из https://www.cyberforum.ru/cgi-bin/latex.cgi?n элементов по https://www.cyberforum.ru/cgi-bin/latex.cgi?m равно https://www.cyberforum.ru/cgi-bin/latex.cgi?n^m. Если не учитывать симметрию, тогда ответ: https://www.cyberforum.ru/cgi-bin/latex.cgi?8^{8}=16777216! Пусть одна половина монеты золотая (1), а другая серебряная (0) (рис. 2.2).
Посчитайте сколько вариантов такой монеты (00000000, 00000001, ..., 11111111) можно собрать из битов в этом случае?

Ответ: https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{8}=256. Хорошенько запомните это число — оно не один раз встретится вам в этой книге!
В 1948 г. американский математик Джон Уайлдер Таки (John Wilder Tukey) заменил словосочетание binary digit (двоичное число) сначала на более короткое bigit, а затем на еще более короткое bit. Теперь битом называют один разряд двоичного кода (числа с основанием 2). Бит — основной структурный блок, из которого строится информация. Один бит информации — это минимально возможное ее количество. Все, что меньше бита, информации не содержит. Бит может принимать только два взаимоисключающих значения: да/нет, 1/0, включено/выключено, черное/белое. Поскольку бит представляет собой минимальный объем, более сложную информацию можно передавать в нескольких битах.

Позиционные системы счисления
Числа записанные в позиционных системах счисления с основанием https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta определяются следующим образом:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha _{n}\alpha _{n-1}...\alpha _{2}\alpha _{1}\alpha _{0},\alpha _{-1}\alpha _{-k}=
https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha _{n}\beta^{n}+\alpha _{n-1}\beta^{n-1}+...\alpha _{2}\beta^{2}+\alpha _{1}\beta^{1}+\alpha _{0}\beta^{0}+\alpha _{-1}\beta^{-1}+...+\alpha _{-k}\beta^{-k} (1)
где https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha (альфа) – допустимая в данной системе цифра, https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta (бета) – основание системы счисления, а показатели степени обозначают порядковый номер.

Для традиционной десятичной системы возможными значениями https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha будут цифры от 0 до 9, индекс при https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha покажет порядок разрядности, https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta равняется 10, а показатель степени — любое число от плюс бесконечности до минус бесконечности. Между https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha_{0} и https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha_{-1} ставят разделяющую запятую, отделяющую целую от дробной части числа. Цифру https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha_{k} с б?льшим https://www.cyberforum.ru/cgi-bin/latex.cgi?k называют более значимой, чем https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha_{k} с меньшим https://www.cyberforum.ru/cgi-bin/latex.cgi?k; крайнюю слева, или «ведущую», цифру называют наиболее значимой, а крайнюю справа, или «хвостовую», — наименее значимой. Посмотрим на то, как представить по формуле 1 число 987654,321:
https://www.cyberforum.ru/cgi-bin/latex.cgi?9\cdot 10^{5}+8\cdot 10^{4}+7\cdot 10^{3}+6\cdot 10^{2}+5\cdot 10^{1}+4\cdot 10^{0}+ 3\cdot 10^{-1}+2\cdot 10^{-2}+1\cdot 10^{-3}=
https://www.cyberforum.ru/cgi-bin/latex.cgi?=(9\cdot 100000)+(8\cdot 10000)+ (7\cdot 1000)+ (6\cdot 100)+ (5\cdot 10)+ (4\cdot 1)+
https://www.cyberforum.ru/cgi-bin/latex.cgi?+(3\cdot 0,1)+(2\cdot 0,01)+(1\cdot 0,001)
В результате сложения промежуточных сумм получаем число https://www.cyberforum.ru/cgi-bin/latex.cgi?987654,321.

В каждом формате представления чисел, или системе счисления, используется свое основание — максимальное значение числа, которое можно представить с помощью одного разряда. В общем случае в качестве https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta берется целое число, большее 1, а в качестве https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha_{k} — целые числа из интервала https://www.cyberforum.ru/cgi-bin/latex.cgi?0\leq\alpha_{k}<\beta. Таким образом приходим к стандартной двоичной (https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta =2), троичной (https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta =3), четверичной (https://www.cyberforum.ru/cgi-bin/latex.cgi?\beta =4), … системам счисления.
В таблице 2.1.1 приведены все возможные значения разрядов https://www.cyberforum.ru/cgi-bin/latex.cgi?\alpha в разных системах счисления.

Компьютеры работали, работают и в ближайшее время будут работать в двоичной системе. Человечество же в своем развитии остановилось на десятичной системе счисления — она была выбрана опытным путем в процессе долгого перебора пальцев. Кроме десятичной (decimal), при написании программ на языке ассемблер используют двоичную (binary), восьмеричную (octal), шестнадцатеричную (hexadecimal) системы счисления.
Цифры разных систем счисления
Система счисления Основание Используемые цифры
двоичная 2 0,1
четверичная 4 0, 1, 2, 3
восьмеричная 8 0, 1, 2, 3, 4, 5, 6, 7
десятичная 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
шестнадцатеричная 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Таблица 2.1.1

Эквиваленты записи чисел в разных системах счисления
Двоич-
ная
Четве-
ричная
Восьме-
ричная
Десятич-
ная
Шестнадца-
теричная
0 0 0 0 0
1 1 1 1 1
10 2 2 2 2
11 3 3 3 3
100 10 4 4 4
101 11 5 5 5
110 12 6 6 6
111 13 7 7 7
1000 20 10 8 8
1001 21 11 9 9
1010 22 12 10 А
1011 23 13 11 B
1100 30 14 12 C
1101 31 15 13 D
1110 32 16 14 Е
1111 33 17 15 F
10000 100 20 16 10
Таблица 2.1.2
Вот задача, которая может показаться на первый взгляд абсурдной: чему равно https://www.cyberforum.ru/cgi-bin/latex.cgi?84, если https://www.cyberforum.ru/cgi-bin/latex.cgi?8\cdot 8=54?
Этот странный вопрос не лишен смысла и задача решается с помощью системы уравнений. Наверное вы догадались, что числа входящие в задачу, написаны не в десятичной системе, иначе вопрос чему равно https://www.cyberforum.ru/cgi-bin/latex.cgi?84 выглядит нелепым. Пусть основание неизвестной системы равно https://www.cyberforum.ru/cgi-bin/latex.cgi?x. Запись числа https://www.cyberforum.ru/cgi-bin/latex.cgi?84 означает 8 единиц второго разряда и 4 единицы первого, то есть https://www.cyberforum.ru/cgi-bin/latex.cgi?84=8\cdot x+4.
Запись числа https://www.cyberforum.ru/cgi-bin/latex.cgi?54 означает https://www.cyberforum.ru/cgi-bin/latex.cgi?5\cdot x+4 получили уравнение https://www.cyberforum.ru/cgi-bin/latex.cgi?8\cdot 8=5\cdot x+4, то есть в десятичной системе https://www.cyberforum.ru/cgi-bin/latex.cgi?64=5\cdot x+4, откуда https://www.cyberforum.ru/cgi-bin/latex.cgi?x=12. Числа написаны по двенадцатеричной системе, и https://www.cyberforum.ru/cgi-bin/latex.cgi?84_{12}=8\cdot 12+4=100_{10}. Значит: если https://www.cyberforum.ru/cgi-bin/latex.cgi?8\cdot 8=54_{x}, то https://www.cyberforum.ru/cgi-bin/latex.cgi?x=12 и https://www.cyberforum.ru/cgi-bin/latex.cgi?84_{x}=100_{10}.
Подобным же образом решается и другая задача: чему равно https://www.cyberforum.ru/cgi-bin/latex.cgi?100, когда https://www.cyberforum.ru/cgi-bin/latex.cgi?5\cdot 6=33? Ответ: 81 в девятеричной системе счисления.

Чтобы не запутаться в системах счисления, в конце числа ставят букву спецификатор: после двоичного числа букву b (binary), после восьмеричного — o (octal), после шестнадцатеричного — h (hexadecimal), а после десятичного спецификатор, как правило, или не ставится, или ставится буква d (decimal).

Так как сложно определить, являются ли наборы символов типа BEEF или DEADC0DE переменными или шестнадцатеричными (далее по тексту hex) числами, приходится соблюдать следующие правила при их записи:
  1. если число начинается с «символа» (A-F), то в начале числа ставят ноль;
  2. название переменной не может начинаться с десятичной цифры;
  3. хотя при записи шестнадцатеричного числа большие и малые одноименные буквы считаются эквивалентными, но цифры записывают большими буквами, а спецификатор маленькой.
Числа, используемые в компьютере, могут быть представлены с помощью таких устройств памяти как триггеры. На рисунке 2.1.1 показан регистр, состоящий из восьми триггеров: https://www.cyberforum.ru/cgi-bin/latex.cgi?X_5, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_4, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_3, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_2, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_1, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_0, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{-1} и https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{-2}, используемых для хранения числа. Пусть https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{5}=1, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{4}=0, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{3}=1, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{2}=0, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{1}=1, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{0}=1, https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{-1}=0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?X_{-2}=1, тогда запись состояния триггеров соответствует двоичной записи числа 101011,01b или десятичной записи числа 43,25.

Шестнадцатеричная запись числа
Когда мы пишем число 123 в десятичной системе счисления, то подразумеваем:
1 раз по 100 https://www.cyberforum.ru/cgi-bin/latex.cgi?(100=10^{2}) + 2 раза по 10 + 3 раза по 1
Если мы используем запись числа 123h в шестнадцатеричной системе счисления, то подразумевается: 1 раз по 256 https://www.cyberforum.ru/cgi-bin/latex.cgi?(256=16^{2}) + 2 раза по 16 + 3 раза по 1 что соответствует десятичной записи https://www.cyberforum.ru/cgi-bin/latex.cgi?291:
https://www.cyberforum.ru/cgi-bin/latex.cgi?123h\rightarrow 291
Шестнадцатеричная запись числа https://www.cyberforum.ru/cgi-bin/latex.cgi?5BCh это:
5 раз по 256 + 11 раз по 16 (B=11 по таблице 2.1.2) + 12 раз по 1 (С=12)
А теперь переведем https://www.cyberforum.ru/cgi-bin/latex.cgi?5BCh из шестнадцатеричного вида в десятичную систему счисления:
https://www.cyberforum.ru/cgi-bin/latex.cgi?5\cdot 16^{2} + 11\cdot 16^{1} + 12\cdot 16^{0} = 1468
https://www.cyberforum.ru/cgi-bin/latex.cgi?5BCh\rightarrow 1468
Второй способ перевода из шестнадцатеричной в десятичную систему сложения заключается в умножении на 6 на https://www.cyberforum.ru/cgi-bin/latex.cgi?k-ом шаге https://www.cyberforum.ru/cgi-bin/latex.cgi?k ведущих разрядов и сложении полученных (https://www.cyberforum.ru/cgi-bin/latex.cgi?k+1) ведущих разрядов, перед сложением https://www.cyberforum.ru/cgi-bin/latex.cgi?k ведущих разрядов числа переводятся в псевдодесятичный формат (пдф).
Пример перевода числа 7Bh в пдф: https://www.cyberforum.ru/cgi-bin/latex.cgi?7\cdot 10+11=81 (B=11). Для лучшего понимания внимательно рассмотрите примеры перевода чисел из шестнадцатеричного вида https://www.cyberforum.ru/cgi-bin/latex.cgi?0ABCh и https://www.cyberforum.ru/cgi-bin/latex.cgi?0CDEFh в десятичный https://www.cyberforum.ru/cgi-bin/latex.cgi?2748 и https://www.cyberforum.ru/cgi-bin/latex.cgi?52719:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
+ABC A=10 10*6=60 +CDEF C=12 12*6=72
60 72
--- ----
+111C<--переводим AB в ПДФ +133EF<--переводим CD в ПДФ
60 72
---- --------
+171C 171*6=1026 +205EF 205*6=1230
1026 1230
------ -----------
+1722<--переводим 171C в ПДФ +2064F<--переводим 205E в ПДФ
1026 1230
----- --------
2748 +3294F 3294*6=19764
19764
-------
+32955<--переводим 3294F в ПДФ
19764
---------
52719
Первый способ преобразование вида числа из десятичной системы в шестнадцатеричную – сперва находим последнюю цифру, затем предпоследнюю и так далее...
Число в десятичной форме записи 42936 переводится следующим образом:
Обратный процесс – переведем число из шестнадцатеричного вида в десятичный – возьмем число вида https://www.cyberforum.ru/cgi-bin/latex.cgi?0A7B8h учитывая, что каждая шестнадцатеричная цифра всегда в 16 раз больше ближайшей цифры справа:

https://www.cyberforum.ru/cgi-bin/latex.cgi?0A7B8h \rightarrow 42936
Второй вариант перевода числа из десятичного вида в шестнадцатеричный – сперва находим первую цифру, затем вторую и так далее... Для начала придется запомнить степени https://www.cyberforum.ru/cgi-bin/latex.cgi?16 (https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{5}=1048576, https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{4}=65536, https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{3}=4096, https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{2}=256).
Начинаем с вычисления старшего разряда и определения его порядка в шестнадцатеричном виде числе, если десятичное число между 1 и 16 миллионами – начинаем с деления на 1048576, если между миллионом и 65 тысячами – начнем с деления на 65536 и так далее. Определившись со степенью https://www.cyberforum.ru/cgi-bin/latex.cgi?n – делим десятичное представление числа на https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{n}. Результатом будет первая шестнадцатеричная цифра и остаток. Остаток делится на https://www.cyberforum.ru/cgi-bin/latex.cgi?16^{n-1} и так далее, пока остаток не станет меньше 16, а степень нулевой. Для примера рассчитаем шестнадцатеричное представление числа https://www.cyberforum.ru/cgi-bin/latex.cgi?24477:
Для контроля переведем найденный шестнадцатеричный вид числа обратно в десятичный по формуле 1:
https://www.cyberforum.ru/cgi-bin/latex.cgi?5F9Dh=5\cdot 4096+15\cdot 256+9\cdot 16+13=20480+3840+144+13=24477

Двоичное представление числа
Компьютер работает с двоичной информацией, а человеку удобно производить вычисления, используя десятичную систему счисления. Для перевода вида числа из десятичной системы в двоичную можно использовать три способа.
Способ первый – классический: получаем двоичный вид числа от последней двоичной цифры к первой. Число последовательно делится на 2 до получения частного равного нулю. Представление числа в двоичной системе – это упорядоченная последовательность остатков от деления в порядке, обратном их получению.
Делим число на 2. Запишем частное https://www.cyberforum.ru/cgi-bin/latex.cgi?q и остаток https://www.cyberforum.ru/cgi-bin/latex.cgi?a.
  1. Если в результате деления частное https://www.cyberforum.ru/cgi-bin/latex.cgi?q\neq 0, то принимаем его за новое делимое и возвращаемся к пункту 1.
  2. Если в результате деления частное https://www.cyberforum.ru/cgi-bin/latex.cgi?q = 0 выписываем остатки в обратном порядке. Это и будет число представленное в двоичной системе счисления.
Получение двоичного вида числа https://www.cyberforum.ru/cgi-bin/latex.cgi?147:

147https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow10010011b
Способ второй – вычисляем двоичный вид числа начиная с первой двоичной цифры. Для этого придется запомнить степени https://www.cyberforum.ru/cgi-bin/latex.cgi?2 (https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{10}=1024, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{9}=512, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{8}=256, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{7}=128, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{6}=64, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{5}=32, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{4}=16, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{3}=8, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{2}=4). Для примера рассчитаем как будет выглядеть двоичное представление того же числа https://www.cyberforum.ru/cgi-bin/latex.cgi?147, https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{7}=128 https://www.cyberforum.ru/cgi-bin/latex.cgi?< 147 < https://www.cyberforum.ru/cgi-bin/latex.cgi?256=2^{8}:

Результат: 147 https://www.cyberforum.ru/cgi-bin/latex.cgi?\rightarrow 10010011b.
Способ третий – студенческий: щелкаем по клавише «Пуск», открываем стандартные приложения, запускаем калькулятор в режиме инженерный, набираем десятичное число и нажимаем на клавишу F8 или мышкой по переключателю с надписью Bin. На экране калькулятора появится двоичный эквивалент числа (рис. 2.1.3).

Рис. 2.1.3 Представление числа 147 в десятичном (Dec),
двоичном (Bin) и шестнадцатеричном виде (Hex)
Для обратного преобразования из двоичной системы счисления в десятичную представьте двоичное число https://www.cyberforum.ru/cgi-bin/latex.cgi?10100111b в следующем виде
https://www.cyberforum.ru/cgi-bin/latex.cgi?1\cdot 2^{7}+0\cdot 2^{6}+1\cdot 2^{5}+0\cdot 2^{4}+0\cdot 2^{3}+1\cdot 2^{2}+1\cdot 2^{1}+1\cdot 2^{0}=128+32+4+2+1=167
или используйте калькулятор.
Двоичные числа могут представлять собой «многометровые» последовательности 0 и https://www.cyberforum.ru/cgi-bin/latex.cgi?1, а так как при запоминании или записи такого числа легко ошибиться — применяют следующий мнемонический прием — цифры в двоичном числе объединяют в группу по 3 (триады) или 4 (тетрады) цифры и запоминают уже эту итоговую цифру. То же самое число https://www.cyberforum.ru/cgi-bin/latex.cgi?11011b, если добавить недостающие нули и разделяющий группы цифр знак подчеркивания можно представить и как https://www.cyberforum.ru/cgi-bin/latex.cgi?011.011b или https://www.cyberforum.ru/cgi-bin/latex.cgi?33o (восьмеричное число), и как https://www.cyberforum.ru/cgi-bin/latex.cgi?0001.1011b или https://www.cyberforum.ru/cgi-bin/latex.cgi?1Bh (шестнадцатеричное число). Докажем это. Пусть у нас есть двоичное число https://www.cyberforum.ru/cgi-bin/latex.cgi?N с восемью разрядами до и четырьмя разрядами после запятой:
https://www.cyberforum.ru/cgi-bin/latex.cgi?N = b_{7}b_{6}b_{5}b_{4}b_{3}b_{2}b_{1}b_{0},b_{-1}b_{-2}b_{-3}b_{-4}
В двоичной системе это число представляется как:
https://www.cyberforum.ru/cgi-bin/latex.cgi?N=b_{7}\cdot 2^{7}+b_{6}\cdot 2^{6}+b_{5}\cdot 2^{5}+b^{4}\cdot 2^{4}+b_{3}\cdot 2^{3}+b_{2}\cdot 2^{2}+b_{1}\cdot 2^{1}+b_{0}\cdot 2^{0}+b_{-1}\cdot 2^{-1}+b_{-2}\cdot 2^{-2}+b_{-3}\cdot 2^{-3}+b_{-4}\cdot 2^{-4}=
https://www.cyberforum.ru/cgi-bin/latex.cgi?=(b_{7}\cdot 2^{3}+b_{6}\cdot 2^{2}+b_{5}\cdot 2^{1}+b_{4}\cdot 2^{0})\cdot 2^{4}+(b_{3}\cdot 2^{3}+b_{2}\cdot 2^{2}+b_{1}\cdot 2^{1}+b_{0}\cdot 2^{0})\cdot 2^{0}+ (b_{-1}\cdot 2^{3} + b_{-2}\cdot 2^{2} + b_{-3}\cdot 2^{1} + b_{-4}\cdot 2^{0})\cdot 2^{-4} =
https://www.cyberforum.ru/cgi-bin/latex.cgi?=a_{1}\cdot 2^{4}+a_{0}\cdot 2^{0}+a_{-1}\cdot 2^{-4} = a_{1}\cdot 16^{1}+a_{0}\cdot 16^{0}+ a_{-1}\cdot 16^{-1},
где https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{1} = b_{7}\cdot 2^{3} + b_{6}\cdot 2^{2} + b_{5}\cdot 2^{1} + b_{4}\cdot 2^{0}
https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{0} = b_{3}\cdot 2^{3} + b_{2}\cdot 2^{2} + b_{1}\cdot 2^{1} + b_{0}\cdot 2^{0}
https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{-1} = b_{-1}\cdot 2^{3} + b_{-2}\cdot 2^{2} + b_{-3}\cdot 2^{1} + b_{-4}\cdot 2^{0} .
Из представления https://www.cyberforum.ru/cgi-bin/latex.cgi?N= a_{1}\cdot 16^{1}+a_{0}\cdot 16^{0}+a_{-1}\cdot 16^{-1} следует, что шестнадцатеричными цифрами числа https://www.cyberforum.ru/cgi-bin/latex.cgi?N являются https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{1}, https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{0}, https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{-1}, а равенство https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{1}=b_{7}\cdot 2^{3}+b_{6}\cdot 2^{2}+b_{5}\cdot 2^{1}+b_{4}\cdot 2^{0} показывает — если записать шестнадцатеричную цифру https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{1} в виде тетрады двоичных цифр, то этими двоичными цифрами будут https://www.cyberforum.ru/cgi-bin/latex.cgi?b_7, https://www.cyberforum.ru/cgi-bin/latex.cgi?b_6, https://www.cyberforum.ru/cgi-bin/latex.cgi?b_5, https://www.cyberforum.ru/cgi-bin/latex.cgi?b_4. Поскольку равенства аналогичны и для https://www.cyberforum.ru/cgi-bin/latex.cgi?a_0, https://www.cyberforum.ru/cgi-bin/latex.cgi?a_{-1}, тем самым доказано, что двоичная запись числа N совпадает с его шестнадцатеричной записью.
Для перевода целого числа из двоичного представления в шестнадцатеричное его разряды, начиная с крайнего правого, группируются по четыре, недостающие цифры слева заменяются нулями, а затем каждая группа заменяется согласно таблице на соответствующий двоичный эквивалент. Например, число 0110_0100_1011_0101b в шестнадцатеричном виде представляется числом 64B5h:
bin: 0110 0100 1011 0101
hex: 6 4 B 5
Для перевода числа из шестнадцатеричного представления в двоичное каждая цифра шестнадцатеричного числа заменяется, согласно таблице 2.1.2 на соответствующее двоичное значение.
hex: 7 F 0 E
bin: 0111 1111 0000 1110
Представление числа в двоичной, десятичной, восьмеричной или в любой другой системе представления чисел — это личное дело каждого, но вот компьютер оперирует исключительно с двоичными числами, то есть с битами. Совокупность двоичных разрядов, выражающих числовые или иные данные, образует некий битовый рисунок (таблица 2.1.3). Практика показывает, что с битовым представлением удобнее работать, если этот рисунок имеет регулярную форму. В настоящее время в качестве таких форм используется последовательность из восьми взаимосвязанных битов, которые называются байтами (BYTE — BINARY TERM). Биты называются взаимосвязанными потому, что для значения байта важно не только сколько битов в нем включено (равно 1), но и их местоположение. Значение байта определяется по правилам позиционной арифметики, то есть чем левее расположены включенные биты, тем больше значение байта: https://www.cyberforum.ru/cgi-bin/latex.cgi?10000000b>011111111b. Нумерация битов в байте, слове или иной конструкции будет всегда начинаться с 0 и вестись слева на право.

Рис. 2.1.4. Арифметические операции в двоичном и десятичном видах
Арифметические операции в любой системе счисления выполняются по тем же алгоритмам, что и в десятичной системе. На рисунке 2.1.4 (а) показано сложение, (б) — вычитание, (в) — умножение и (г) — деление.
Во многих случаях целесообразно использовать не 8-битное кодирование, а 16-битное, 24-битное, 32-битное и более.
Десятичное
число
Hex Bin байт
0 0 0 0000 0000
1 1 1 0000 0001
2 2 10b 0000 0010
3 3 11b 0000 0011
4 4 100b 0000 0100
...
255 0FFh 11111111b 1111 1111
Таблица 2.1.3

Продолжение
Миниатюры
Электронный учебник   Электронный учебник   Электронный учебник  

Электронный учебник   Электронный учебник   Электронный учебник  

Электронный учебник   Электронный учебник   Электронный учебник  

Электронный учебник   Электронный учебник   Электронный учебник  

Изображения
   
25
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 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), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru