Что такое двоичная триада и двоичная тетрада
Использование таблицы треад и тетрад
Таблицу триад и тетрад вы можете увидеть, щелкнув по кнопке в правом нижнем углу сайта. Она нужна для быстрого перевода чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную и наоборот.
Многие зазубривают таблицу, но она строится очень просто без зубрёжки:
Перевод чисел из восьмеричной системы счисления в двоичную
Возьмем восьмеричное число 34568
Представим каждый разряд числа в виде триады:
Избавимся от первого незначащего нуля и получим результат:
Перевод чисел из двоичной системы счисления в восьмеричную
Возьмем число 111011012
Разделим его на триады, начиная с правого разряда:
Добавим один незначащий нуль:
Заменим триады значениями из таблицы:
Получается, что 3558 = 111011012
Перевод чисел из шестнадцатеричной системы счисления в двоичную
Возьмем число 15F16
Представим каждый разряд в виде тетрады:
Избавимся от трех первых незначащих нулей и запишем результат:
Получается, что 1010111112 = 15F16
Перевод чисел из двоичной системы счисления в шестнадцатеричную
Возьмем число 100010110111012
Разделим его на тетрады, начиная с правого разряда:
0010 0010 1101 1101
Заменим тетрады значениями из таблицы:
Получается, что 22DD16 = 100010110111012
FasmWorld Программирование на ассемблере FASM для начинающих и не только
Учебный курс. Часть 7. Системы счисления
Автор: xrnd | Рубрика: Учебный курс | 19-03-2010 |
Распечатать запись
Эта статья по большей части для совсем начинающих. Если вы хорошо разбираетесь в системах счисления, можете обратить внимание лишь на особенности синтаксиса ассемблера FASM в конце статьи.
На самом деле процессор работает только с двоичными числами, состоящими из единиц и нулей 🙂 В виде двоичных чисел хранятся и обрабатываются все данные и команды любой программы. Однако, двоичная запись чисел слишком громоздка и неудобна для человека, поэтому в программах на ассемблере используются и другие системы счисления: десятичная, шестнадцатеричная и восьмеричная.
Немного теории
Прежде всего разберёмся, в чём различие между системами счисления. Любое десятичное число можно представить в таком виде:
12310 = 1·10 2 + 2·10 1 + 3·10 0
Индекс внизу обозначает, что это десятичное число. Цифра каждого разряда умножается на 10 в степени, равной номеру разряда, если считать с нуля справа налево. В более общем виде:
где a, b и с — какие-то цифры, а r — основание системы счисления. Для десятичной системы r = 10, для двоичной — r = 2, для троичной r = 3 и т.д. Например, то же самое число в других системах:
4435 = 4·5 2 + 4·5 1 + 3·5 0 = 4·25 + 4·5 + 3·1 = 12310 (пятеричная система)
1738 = 1·8 2 + 7·8 1 + 3·8 0 = 1·64 + 7·8 + 3·1 = 12310 (восьмеричная система)
11110112 = 1·2 6 + 1·2 5 + 1·2 4 + 1·2 3 + 0·2 2 + 1·2 1 + 1·2 0 = 1·64 + 1·32 + 1·16 + 1·8 + 0·4 + 1·2 + 1·1 = 12310 (двоичная система)
Шестнадцатеричная система
В шестнадцатеричной системе для обозначения цифр больше 9 используются буквы A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Например:
C716 = 12·16 1 + 7·16 0 = 12·16 + 7·1 = 19910
Удобство шестнадцатеричной системы в том, что в неё очень легко можно переводить двоичные числа (и в обратную сторону тоже). Четыре разряда двоичного числа (тетрада) представляются одним разрядом шестнадцатеричного. Для перевода достаточно разбить число на группы по 4 бита и заменить каждую тетраду соответствующей шестнадцатеричной цифрой.
Двоичная тетрада | Шестнадцатеричная цифра |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
Для записи одного байта требуется всего 2 шестнадцатеричные цифры:
Восьмеричная система
Восьмеричная система также удобна для представления двоичных чисел, хотя она используется намного реже, чем шестнадцатеричная. Для быстрого перевода надо разбить двоичное число на группы по 3 разряда (триплеты или триады).
Двоичная триада | Восьмеричная цифра |
---|---|
000 | 0 |
001 | 1 |
010 | 2 |
011 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Например: 001 110 1012 = 1658
Синтаксис ассемблера FASM
По умолчанию, число в программе воспринимается ассемблером как десятичное. Чтобы обозначить двоичное число, необходимо к нему в конце добавить символ ’b’. Восьмеричное число обозначается аналогично с помощью символа ’o’. Для записи шестнадцатеричного числа FASM поддерживает 3 формы записи:
Этот синтаксис используется как при объявлении данных, так и в командах. Вот примеры записи чисел во всех четырёх системах:
mov ax,537 ;Десятичная система mov bl,11010001b ;Двоичная система mov ch,57o ;Восьмеричная система mov dl,$C2 ;\ mov si,0x013A ; \ mov ah,18h ; / Шестнадцатеричная система mov al,0FFh ;/ mov al,FFh ;Ошибка!
Комментарии:
Сначала будут основы ассемблера, команды процессора без привязки к особенностям какой-то операционной системы. А потом и до окон доберёмся.
Вот только побыстрей бы изучение окон закончились, а начались уроки типа с файлами или с железом что нибудь или др…
Так держать! С нетерпением жду новых уроков! СПАСИБО
Рад, что хоть кто-то читает 🙂 Скоро будет следующая часть.
Очень помогли :))) Я некоторые нюансы только сейчас понял :)))))
Отлично, я очень рад 🙂
А вот и системы счисления. Есть одно пожелание — сделать на эту страницу перекрестную ссылку с «первой программы», которая ничего не делала, кроме как двигала значения по регистрам. Там не каждому новичку будет ясно, почему 255d = FFh
Это хорошая идея. Я так и сделаю. Сначала мне не хотелось вообще писать про системы счисления, но потом я решил всё же написать. Вдруг кто-то не знает 🙂
У вас опечатка, для новичков повод потренироваться и не идти слепо за гуру 🙂
C3 = 12·16 + 3·16 = 12·16 + 3·1 = 195
Вот чуток добавлю, как переводить из десятичного в шестнадцатеричное число.
Для перевода из десятичного в двоичное, принцип ещё проще. Делим на 2, есть остаток пишим 1, нет пишем 0. А так всё тоже.
Ага, или можно ещё стандартным калькулятором Windows воспользоваться 🙂
Так это понятно, но вот если на бумаге посчитать, то многие в панике. 🙂
Лучше знать, как это делать вручную на бумаге, а калькулятор лишь средство убыстрения процесса. Тем более если курс призван дать познания ассемблера, пожалуй стоит понимать все процессы пересчёта между системами.
Да, я согласен. Сам раньше так считал. И знать, как это делается, полезно.
Не убыстрения, а ускорения 🙂
Из книги Криса Касперски «Техника и философия хакерских атак»:
Как можно перевести произвольное число в двоичное? Для этого нужно поделить
его на 2 и записать остаток в младший разряд. И так до тех пор, пока делить
станет нечего. Хорошо, а как разделить, если нет калькулятора и даже счетов?
Разумеется, в столбик. Однако, этот способ несколько утомителен.
Куда проще запомнить (или вычислить в уме) ряд квадратов:
1 2 4 8 16 32 64 128
Ясно, что любое число от нуля до 255 представляет собой их сумму. Причем
каждая степень может встречаться только один раз. Покажем это на примере.
Допустим, нам необходимо узнать двоичное представление числа 99. Начинаем с
конца. Число нечетное, значит, в сумме фигурирует единица, т.е. младший бит
равен единице. Отнимаем от 99 один и получим 98. Если отнять еще и двойку,
то получим 96, а 96 == 32 + 64 как легко можно видеть. Итого в двоичном виде
это — 1100011. Конечно, это потребует определенных навыков устного счета, но
все же достаточно просто, чтобы не обращаться каждый раз к калькулятору.
Аналогично можно любое число из двоичного перевести в десятичное. Например:
1001b == 1+2*0+4*0+8*1 == 1+8 == 9
Все вышесказанное не в меньшей мере применимо и к шестнадцатеричным числам:
0x1 0x2 0x4 0x8 0x10 0x20 0x40 0x80
Причем все математические операции с такими круглыми числами делать в уме на
порядок проще
Двоичная восьмеричная шестнадцатеричная системы счисления
Двоичная система счисления
где ai — двоичные цифры (0 или 1).
Восьмеричная система счисления
В восьмеричной системе счисления базисными цифрами являются цифры от 0 до 7. 8 единиц младшего разряда объединяются в единицу старшего.
Шестнадцатеричная система счисления
В шестнадцатеричной системе счисления базисными цифрами являются цифры от 0 до 15 включительно. Для обозначения базисных цифр больше 9 одним символом кроме арабских цифр 0…9 в шестнадцатеричной системе счисления используются буквы латинского алфавита:
Например, число 17510 в шестнадцатеричной системе счисления запишется как AF16. Действительно,
10·16 1 +15·16 0 =160+15=175
В таблице представлены числа от 0 до 16 в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления.
Десятичная | Двоичная | Восьмеричная | Шестнадцатеричная |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 | 20 | 10 |
Двоично-восьмеричные и двоично-шестнадцатеричные преобразования
Двоичная система счисления удобна для выполнения арифметических действий аппаратными средствами микропроцессора, но неудобна для восприятия человеком, поскольку требует большого количества разрядов. Поэтому в вычислительной технике помимо двоичной системы счисления широкое применение нашли восьмеричная и шестнадцатеричная системы счисления для более компактного представления чисел.
Три разряда двоичной системы счисления реализуют все возможные комбинации восьмеричных цифр в двоичной системе счисления: от 0 (000) до 7(111). Чтобы преобразовать двоичное число в восьмеричное, нужно объединить двоичные цифры в группы по 3 разряда (триады) в две стороны, начиная от разделителя целой и дробной части. При необходимости слева от исходного числа нужно добавить незначащие нули. Если число содержит дробную часть, то справа от него тоже можно добавить незначащие нули до заполнения всех триад. Затем каждая триада заменяется восьмеричной цифрой.
Пример: Преобразовать число 1101110,012 в восьмеричную систему счисления.
Объединяем двоичные цифры в триады справа налево. Получаем
Чтобы перевести число из восьмеричной системы в двоичную, нужно каждую восьмеричную цифру записать ее двоичным кодом:
Четыре разряда двоичной системы счисления реализуют все возможные комбинации шестнадцатеричных цифр в двоичной системе счисления: от 0 (0000) до F(1111). Чтобы преобразовать двоичное число в шестнадцатеричное, нужно объединить двоичные цифры в группы по 4 разряда (тетрады) в две стороны, начиная от разделителя целой и дробной части. При необходимости слева от исходного числа нужно добавить незначащие нули. Если число содержит дробную часть, то справа от нее тоже нужно добавить незначащие нули до заполнения всех тетрад. Затем каждая тетрада заменяется шестнадцатеричной цифрой.
Пример: Преобразовать число 1101110,112 в шестнадцатеричную систему счисления.
Объединяем двоичные цифры в тетрады справа налево. Получаем
Чтобы перевести число из шестнадцатеричной системы в двоичную, нужно каждую шестнадцатеричную цифру записать ее двоичным кодом:
Что такое двоичная триада и двоичная тетрада
Автор: Баранова Марина Николаевна
Организация: МБОУ СОШ №2 г. Вяземского
Населенный пункт: г. Вяземский
Цель урока:
Задачи:
1. познакомить с “методом триад и тетрад” для перевода двоичных, восьмеричных и шестнадцатеричных чисел из одной СС в другую.
2. выделить и систематизировать алгоритмы перевода
3. применить систематизированный материал при решении задач
Техническое оснащение урока: интерактивная доска
Тип урока: лекция
Номер урока в блоке «Системы счисления»: 2
Учебник: Информатика и информационные технологии. Учебник для 10-11 классов/ Н.Д. Угринович. – М.: БИНОМ. Лаборатория знаний, 2006 г.
Деятельность учителя
Деятельность учащихся
Организационный момент
Задачи этапа: Включение в деловой ритм. Подготовка класса к работе.
Мы продолжаем изучать тематический блок «Системы счисления»
Актуализация знаний
Задачи этапа: подготовить к изучению новой темы.
Раздает карточки с КОЗ №1 (приложение №1)
Решают задание, выявляют проблему
Постановка цели урока
Задачи этапа: определить вместе с учащимися цель урока
Опрос учащихся. Фиксирует проблему в решении задания. Сообщает тему урока: «Двоичные триады и тетрады. Лекция №2»
Раздает план тематического блока ученикам.
Определяют проблему в решении задания, определяют цель урока – научиться переводить двоичные числа в шестнадцатеричные и восьмеричные числа и наоборот
Открытие нового
Задачи этапа: выделить и систематизировать способы представления алгоритмов
Сначала определимся, что мы будем называть двоичными тетрадами и двоичными триадами.
Определение №2 – двоичная тетрада – это четверка двоичных цифр.
Фиксируют в тетради определения.
Разберем задание №2 карточки 2-го варианта: 11101 2 =? 8
Учитель объясняет алгоритм перевода в восьмеричную систему счисления.
А теперь нужно перевести в шестнадцатеричную, как это сделать?
Фиксируют в тетради
Самостоятельно делают вывод о том, что бы перевести двоичное число в шестнадцатеричное, нужно двоичное число разбить на тетрады, и определить какое 16-ое число соответствует найденной тетраде.
Для оперативного перевода из двоичных чисел в восьмеричные числа при решении задач, связанных с системами счисления, можно использовать таблицу триад (в которой показана связь двоичных триад двоичных и восьмеричных чисел)
Заполняют таблицу вместе с учителем с фиксацией в тетради
Для заполнения таблицы двоичных тетрад предлагает выполнить КОЗ №2 (приложение №2)
Выполняют задание, желающий ученик выходит к доске и обосновывает свое решение.
Применение нового знания
Задачи этапа: на основе полученных знаний вывести обратный алгоритм перевода 16-х и 8-х числе в двоичные числа.
Предлагает вместе выполнить задание:
Предлагает выполнить самостоятельно задание, применив выведенный алгоритм:
Определить способ решения для следующей задачи:
Решают задание. Делают вывод об алгоритме перевода.
Решают задание, определяют способ решения.
Подведение итогов урока
Задачи этапа: определить степень решения проблемы, систематизировать полученные знания
Итак, мы с вами вместе решили выявленную в начале урока проблему. Какие новые алгоритмы вы узнали сегодня на уроке?
Домашняя работа
Задача этапа: Обеспечить понимание учащимися цели, содержания и способов выполнения домашнего задания
Обратите внимание на план тематического блока. Через урок и нас семинар, завтра я назначу ответственных за него. Также вы можете приступать к выполнению индивидуальных домашних заданий.
Учитель отвечает на вопросы
Слушают, задают вопросы.
Рефлексия
Приложение №1
КОЗ 1 (компетентностно-ориентированное задание №1)
Компетентность разрешения проблем, аспект идентификация (определение) проблемы, уровень 2
Стимул: мы знаем несколько алгоритмов, которые позволяют переводить числа из одной системы счисления в другую систему счисления.
Задачная формулировка: перед вами карточка с двумя заданиями, выполнить эти задания, используя известные алгоритмы, указать некоторые вероятные причины возникновения проблемы при решении этих заданий.
Модельный ответ:
Приложение №2
КОЗ 2 (компетентностно-ориентированное задание №2)
Информационная компетентность, аспект обработка информации 2 уровень
Стимул:
Для оперативного перевода из двоичных чисел в шестнадцатеричные числа при решении задач, связанных с системами счисления, можно использовать таблицу двоичных тетрад (в которой показана связь двоичных тетрад и шестнадцатеричных чисел)
Задачная формулировка:
Составить таблицу тетрад, обосновать вариант способа решения
Перевод из одной системы счисления в другую с помощью триад и тетрад
Развивающая – развивать познавательный интерес учащихся, умения применять полученные знания на практике.
Воспитательная – повысить уровень информационной культуры учащихся.
I. Проверка домашнего задания
Вызывается ученик к доске для выполнения домашнего упражнения
II. Изучение нового материала
Так как основания 8-1 и 16-й СС являются степенями двойки, то перевод чисел из этих СС в 2-ую и наоборот прост и основан на методах триад и тетрад. Число делится на триады (тетрады) вправо и влево от десятичной точки. Если крайние триады (тетрады) оказались неполными, они дополняются нулями.
Алфавит | Триады | Тетрады |
0 | 000 | 0000 |
1 | 001 | 0001 |
2 | 010 | 0010 |
3 | 011 | 0011 |
4 | 100 | 0100 |
5 | 101 | 0101 |
6 | 110 | 0110 |
7 | 111 | 0111 |
8 | 1000 | |
9 | 1001 | |
А(10) | 1010 | |
В(11) | 1011 | |
С(12) | 1100 | |
D(13) | 1101 | |
E(14) | 1110 | |
F(15) | 1111 |
Упражнение: Выполнить перевод, используя тетрады и триады:
IV. Самостоятельная работа
Выполнить перевод, используя тетрады и триады: