Как компьютер хранит целые числа. Какие существуют форматы представления чисел в памяти компьютера. Чем отличается беззнаковое представление от представления со знаком. Как переводить числа между различными системами счисления. Что такое прямой код числа.
Беззнаковое представление целых чисел в компьютере
Компьютеры используют двоичную систему счисления для хранения и обработки данных. Для представления целых неотрицательных чисел применяется беззнаковый формат.
В беззнаковом формате число представляется последовательностью битов фиксированной длины, обычно 8, 16, 32 или 64 бита. Каждый бит может принимать значение 0 или 1. Значение числа определяется как сумма степеней двойки, соответствующих позициям единичных битов.
Как представить десятичное число в беззнаковом двоичном формате?
Чтобы представить десятичное число в беззнаковом двоичном формате:
- Переведите число в двоичную систему счисления
- Дополните полученный результат нулями слева до нужной разрядности
Например, представим число 61 в 8-разрядном беззнаковом формате:
- 61 в двоичной системе: 111101
- Дополняем до 8 разрядов: 00111101
Таким образом, 61 в 8-разрядном беззнаковом формате: 00111101
Диапазон значений в беззнаковом формате
Диапазон значений, которые можно представить в беззнаковом формате, зависит от количества разрядов. Для n-разрядного представления:
- Минимальное значение: 0 (все биты равны 0)
- Максимальное значение: 2^n — 1 (все биты равны 1)
Например, для 8-разрядного беззнакового формата:
- Минимальное значение: 0 (00000000)
- Максимальное значение: 255 (11111111)
Представление целых чисел со знаком
Для представления как положительных, так и отрицательных целых чисел используется формат со знаком. Наиболее распространенный способ — это прямой код.
Что такое прямой код числа?
В прямом коде старший (левый) бит отводится под знак числа:
- 0 — для положительных чисел
- 1 — для отрицательных чисел
Остальные биты содержат абсолютное значение числа в двоичной системе.
Как записать число в прямом коде?
- Определите знак числа
- Переведите модуль числа в двоичную систему
- Дополните результат нулями слева до нужной разрядности
- Установите старший бит в соответствии со знаком числа
Например, запишем число -61 в 8-разрядном формате со знаком:
- Знак отрицательный, значит старший бит будет 1
- 61 в двоичной системе: 111101
- Дополняем до 7 разрядов: 0111101
- Добавляем знаковый бит: 10111101
Таким образом, -61 в 8-разрядном формате со знаком: 10111101
Перевод чисел между системами счисления
При работе с компьютерным представлением чисел часто требуется переводить числа между различными системами счисления, особенно между двоичной, восьмеричной, десятичной и шестнадцатеричной.
Как перевести число из двоичной системы в десятичную?
Чтобы перевести число из двоичной системы в десятичную:
- Умножьте каждую цифру двоичного числа на соответствующую степень двойки (начиная с 2^0 для крайней правой цифры)
- Сложите полученные результаты
Например, переведем 10111101 из двоичной системы в десятичную:
1*2^7 + 0*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 =
128 + 0 + 32 + 16 + 8 + 4 + 0 + 1 = 189
Как перевести число из десятичной системы в двоичную?
Для перевода числа из десятичной системы в двоичную:
- Последовательно делите число на 2
- Записывайте остатки от деления (0 или 1) справа налево
- Продолжайте, пока частное не станет равным 0
Например, переведем 125 из десятичной системы в двоичную:
- 125 / 2 = 62 остаток 1
- 62 / 2 = 31 остаток 0
- 31 / 2 = 15 остаток 1
- 15 / 2 = 7 остаток 1
- 7 / 2 = 3 остаток 1
- 3 / 2 = 1 остаток 1
- 1 / 2 = 0 остаток 1
Записывая остатки справа налево, получаем: 1111101
Экспоненциальная форма представления чисел
Экспоненциальная форма используется для представления очень больших или очень маленьких чисел. В этой форме число записывается как произведение мантиссы и степени 10.
Как записать число в экспоненциальной форме?
Чтобы записать число в экспоненциальной форме:
- Определите мантиссу — число от 1 до 10
- Определите порядок — степень 10, на которую нужно умножить мантиссу
- Запишите число в виде: мантисса * 10^порядок
Например, запишем число 12345 в экспоненциальной форме:
12345 = 1.2345 * 10^4
Как перевести число из экспоненциальной формы в обычную?
Для перевода числа из экспоненциальной формы в обычную:
- Умножьте мантиссу на 10 в степени, равной порядку
Например, переведем 1.235 * 10^3 в обычную форму:
1.235 * 10^3 = 1.235 * 1000 = 1235
Особенности представления чисел в компьютерных системах
При работе с числами в компьютерных системах важно учитывать ряд особенностей:
- Ограниченный диапазон значений из-за фиксированного количества разрядов
- Возможность переполнения при выходе за пределы допустимого диапазона
- Потеря точности при работе с вещественными числами
- Различия в представлении чисел на разных платформах и в разных языках программирования
Понимание этих особенностей помогает избежать ошибок при разработке программного обеспечения и обработке числовых данных.
Применение различных форматов представления чисел
Разные форматы представления чисел используются в различных ситуациях:
- Беззнаковый формат: для хранения размеров, индексов, счетчиков
- Знаковый формат: для представления чисел, которые могут быть как положительными, так и отрицательными
- Экспоненциальная форма: для работы с очень большими или очень маленькими числами в научных расчетах
Выбор правильного формата важен для эффективного использования памяти и корректной работы алгоритмов.
8
помогите пожалуйста информатикиочень срочно
совместима ли, gtx 1050ti, c Intel core i5 9400-F?
Задача по информатике. Решите, пожалуйста. Ерунду прошу не писать. Даю 20 баллов + 10 за хороший ответ
Что будет нарисовано после выполнения Чертёжником алгоритма?
Приветь) Помогите пожалуйста)) Исполнитель Робот умеет перемещаться по лабиринту, начерченному на плоскости, разбитой на клетки. Между соседними (по … сторонам) клетками может стоять стена, через которую Робот пройти не может. У Робота есть девять команд. Четыре команды — это команды-приказы: вверх вниз влево вправо При выполнении любой из этих команд Робот перемещается на одну клетку соответственно: вверх ↑ вниз ↓, влево ← , вправо →. Если Робот получит команду передвижения сквозь стену, то он разрушится. Также у Робота есть команда закрасить, при которой закрашивается клетка, в которой Робот находится в настоящий момент. Ещё четыре команды — это команды проверки условий. Эти команды проверяют, свободен ли путь для Робота в каждом из четырёх возможных направлений: сверху свободно снизу свободно слева свободно справа свободно Эти команды можно использовать вместе с условием «если», имеющим следующий вид: если условие то последовательность команд все Здесь условие — одна из команд проверки условия. Последовательность команд — это одна или несколько любых команд-приказов. Например, для передвижения на одну клетку вправо, если справа нет стенки, и закрашивания клетки можно использовать такой алгоритм: если справа свободно то вправо закрасить все В одном условии можно использовать несколько команд проверки условий, применяя логические связки и, или, не, например: если (справа свободно) и (не снизу свободно) то вправо все Для повторения последовательности команд можно использовать цикл «пока», имеющий следующий вид: нц пока условие последовательность команд кц Например, для движения вправо, пока это возможно, можно использовать следующий алгоритм: нц пока справа свободно вправо кц Выполните задание. На бесконечном поле имеется лестница. Сначала лестница поднимается вверх слева направо, потом опускается вниз также слева направо. Правее спуска лестница переходит в горизонтальную стену. Высота каждой ступени — 1 клетка, ширина — 1 клетка. Количество ступенек, ведущих вверх, и количество ступенек, ведущих вниз, неизвестно. Между спуском и подъемом ширина площадки — 1 клетка. Робот находится в клетке, расположенной в начале спуска. На рисунке указан один из возможных способов расположения стен и Робота (Робот обозначен буквой «Р») . Напишите для Робота алгоритм, закрашивающий все клетки, расположенные непосредственно над лестницей. Робот должен закрасить только клетки, удовлетворяющие данному условию. Например, для приведённого выше рисунка Робот должен закрасить следующие клетки (см. рисунок). Конечное расположение Робота может быть произвольным. Алгоритм должен решать задачу для произвольного размера поля и любого допустимого расположения стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен разрушиться, выполнение алгоритма должно завершиться. Алгоритм может быть выполнен в среде формального исполнителя или записан в текстовом редакторе. Сохраните алгоритм в текстовом файле.
ДАЮ ПЯТДЕСЯТ БАЛОВ СРОЧНО! Разработать программу, получающую от пользователя 3 натуральных числа А, В и С, выводящую их значения на консоль, а затем в … ыполняющую «сдвиг» значений (то, что было в А, должно стать значением В, то, что было в В – С, а то, что было в С – А) и снова выводящую их значения на консоль. На Python
«Представление целых чисел». (8 класс)
8 класс: «Представление целых чисел»
Образовательные цели:
Обучающие должны знать: правило перевода чисел с одной системы счисления в другую.
(Например, перевод чисел с 2-ой с.с. в 10-ую и наоборот)
Обучающие должны уметь: представлять целые числа (без знаковое представление целых чисел и представление целых чисел со знаком).
Воспитательные задачи: Содействовать развитие индивидуальной и коллективной работы (способствовать развитию культуры взаимоотношений при работе в коллективе). Развитие внимания.
Развивающие задачи: Содействовать развитию умения обобщать, анализировать, проводить самоконтроль и самооценку.
Мобилизующее начало урокаПредварительная организация класса.
Цели:
Психологическая настройка обучающихся на последующее занятие.
Обеспечение нормальной обстановки на уроке.
Приветствие обучающих.
Проверка отсутствующих.
Проверка рабочих мест и внешнего вида обучающих.
Организация внимания.
Счет и вычисления — основа порядка в голове. (Песталоцци)
Иоганн Генрих Песталоцци (12 января 1746, Цюрих — 17 февраля 1827, Бругг) — швейцарский педагог, один из крупнейших педагогов-гуманистов конца XVIII — начала XIX века, внёсший значительный вклад в развитие педагогической теории и практики.
Приветствие учителя.
Готовность к уроку.
Актуализация знаний (повторение)
Давайте вспомним материал прошлого урока. Что мы с вами делали?
У вас была творческая домашняя работа. Давайте капитаны команд предоставят другим командам свои задания, и команда решит их. После решения отдаем ответы на проверку команде, которая вам предоставила задания.
Переводили десятичные числа в другие с.с.
Перевод не десятичных чисел в 10-ую с.с.
Изучение нового материала на уроке
Цели:
Усвоение фактов и основных идей
Освоение метода изучаемого материала
Овладение методикой воспроизведение изучаемого материала.
Давайте запишем тему урока:
«Представление целых чисел».
Цель нашего сегодняшнего урока:
К концу урока каждый из вас должен будет знать, что такое: разряд,
А также знать о беззнаковом представлении целых чисел и представление целых чисел со знаком.
Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов.
Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом.
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8,16,32 или 64 разряда) и наличием или отсутствием знакового разряда.
Обрати внимание!
Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д. Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы.
Для n-разрядного представления оно будет равно 2n−1 . Минимальное число соответствует n нулям, хранящимся в n разрядах памяти, и равно нулю.
Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Обрати внимание!
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Число 5310=1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число.
Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом. В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операции с положительными числами.
Слушают объяснение нового материала, записывают.
Закрепление пройденного на уроке
Цель: прочное усвоение знаний
Задание 1
Представьте десятичные числа в беззнаковом 8-ричном формате:
Ответ: Задание 2Запишите прямой код десятичных чисел в 8-разрядном формате со знаком:
Ответ:Задание 3
Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
Ответ: +10101012 = +8510
-11110002= — 120
Одно выполненное задание оценивается на один +. Собрав 3 плюса обучающий получает оценку 5.
Решение заданий
Контроль и оценка знаний обучающихся.
Контроль и самоконтроль
Решение самостоятельной работы.
Самостоятельная работа
Интерактивное задание (схема состав)
Домашнее задание
Цели:
§ 1.2.1. стр. 21, № 4, 5, 6
Записывают домашнее задание.
Обобщение и систематизация знаний.
Цель:
Выработка системы знаний, умений, навыков, способностей, качеств.
Итоговое повторение.
(Отвечают)
Вывод
Вывод: Научились понимать способы представления целых чисел на компьютере.
Формируют вывод урока.
Самостоятельная работа по информатике по теме «Представление чисел в компьютере» (8 класс)
Проверочная работа «Представление чисел в компьютере»: Вариант 1
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 55
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 255
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +70 и -70
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 1,235*103; 0,147*10-2; 23,25*105
6. Запишите следующие числа в экспоненциальной форме: 12345; 1472; 0,00654
Проверочная работа «Представление чисел в компьютере»: Вариант 2
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 56
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 256
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +71 и -71
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,0156*104; 3654*10-3; 954,55*10-3
6. Запишите следующие числа в экспоненциальной форме: 0,00895; 54123; 2581
Проверочная работа «Представление чисел в компьютере»: Вариант 3
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 57
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 257
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +72 и -72
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 2547*10-5; 0,002458*103; 0,01247*10-2
6. Запишите следующие числа в экспоненциальной форме: 3654; 0,001478; 0,02345
Проверочная работа «Представление чисел в компьютере»: Вариант 4
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 58
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 258
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +73 и -73
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,00147*10-3; 6512*10-4; 0,12478*103
6. Запишите следующие числа в экспоненциальной форме: 4587; 0,009657; 6201
Проверочная работа «Представление чисел в компьютере»: Вариант 5
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 59
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 259
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +74 и -74
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,325*103; 4521*10-4; 1295*102
6. Запишите следующие числа в экспоненциальной форме: 0,0875; 1235; 7893
Проверочная работа «Представление чисел в компьютере»: Вариант 6
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 60
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 260
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +75 и -75
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 2547*10-3; 0,001478*103; 0,01236*102
6. Запишите следующие числа в экспоненциальной форме: 3258; 0,01789; 5412
Проверочная работа «Представление чисел в компьютере»: Вариант 7
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 61
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 261
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +76 и -76
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 231896*10-5; 23158*102; 0,02536*104
6. Запишите следующие числа в экспоненциальной форме: 124587; 0,32165; 98620
Проверочная работа «Представление чисел в компьютере»: Вариант 8
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 62
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 262
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +77 и -77
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 32198*10-2; 0,1247*105; 0,0745*10-2
6. Запишите следующие числа в экспоненциальной форме: 20158; 0,06512; 65014
Проверочная работа «Представление чисел в компьютере»: Вариант 9
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 63
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 263
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +78 и -78
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 6301*10-3; 0,5201*103; 0,014*10-2
6. Запишите следующие числа в экспоненциальной форме: 235401; 0,04789; 32014
Проверочная работа «Представление чисел в компьютере»: Вариант 10
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 64
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 264
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +79 и -79
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,325*102; 541035*10-5; 0,0147*10-2
6. Запишите следующие числа в экспоненциальной форме: 985301; 0,45201; 96478
Проверочная работа «Представление чисел в компьютере»: Вариант 11
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 65
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 265
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +80 и -80
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,02541*10-2; 12703*102; 0,06304*104
6. Запишите следующие числа в экспоненциальной форме: 0,01257; 325698; 12587
Проверочная работа «Представление чисел в компьютере»: Вариант 12
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 66
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 266
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +81 и -81
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,001325*104; 8652*10-2; 452047*10-3
6. Запишите следующие числа в экспоненциальной форме: 30148; 0,0782; 65214
Проверочная работа «Представление чисел в компьютере»: Вариант 13
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 67
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 267
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +82 и -82
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 203504*10-3; 0,0236*103; 0,0147*10-2
6. Запишите следующие числа в экспоненциальной форме: 402501; 0,023512; 9853
Проверочная работа «Представление чисел в компьютере»: Вариант 14
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 68
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 268
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +83 и -83
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 214601*10-3; 0,0325*10-2; 0,03985*104
6. Запишите следующие числа в экспоненциальной форме: 65412; 0,5874; 0,00456
Проверочная работа «Представление чисел в компьютере»: Вариант 15
1. Представьте десятичное число в беззнаковом 8- разрядном формате: 69
2. Представьте десятичное число в беззнаковом 16- разрядном формате: 269
3. Запишите прямой код десятичных чисел в 8-разрядном формате со знаком: +84 и -84
4. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком
5. Запишите следующие числа в естественной форме: 0,7514*104; 24015*10-2; 69018*10-3
6. Запишите следующие числа в экспоненциальной форме: 456201; 0,09621; 780263
Дидактический материал для оценки знаний учащихся 8х классов по теме «Представление чисел в компьютере» | Материал для подготовки к ЕГЭ (ГИА) по информатике и икт (8 класс):
Вариант 1
1. Укажите десятичный эквивалент числа, прямой код которого 11001100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 256 b) 11А16 c) 1010102 d) 438
3. Беззнаковым 8-разрядным представлением числа 63 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -111.
Вариант 2
1. Укажите десятичный эквивалент числа, прямой код которого 10101100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 738 b) 13С16 c) 1010102 d) 266
3. Беззнаковым 8-разрядным представлением числа 73 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -115.
Вариант 3
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 21С16 b) 257 c) 1110112 d) 638
3. Беззнаковым 8-разрядным представлением числа 68 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -101.
Вариант 4
1. Укажите десятичный эквивалент числа, прямой код которого 11011010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1011102 b) 1С116 c) 259 d) 538
3. Беззнаковым 8-разрядным представлением числа 59 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -113.
Вариант 5
1. Укажите десятичный эквивалент числа, прямой код которого 11001110 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 256 b) 21А16 c) 1011102 d) 338
3. Беззнаковым 8-разрядным представлением числа 61 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010101 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -103.
Вариант 6
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 6618 b) 9С16 c) 1011112 d) 366
3. Беззнаковым 8-разрядным представлением числа 71 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -105.
Вариант 7
1. Укажите десятичный эквивалент числа, прямой код которого 10100101 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 12С16 b) 157 c) 111111102 d) 338
3. Беззнаковым 8-разрядным представлением числа 65 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11110110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -91.
Вариант 8
1. Укажите десятичный эквивалент числа, прямой код которого 10111010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1001112 b) А1116 c) 159 d) 4008
3. Беззнаковым 8-разрядным представлением числа 59 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011011 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -73.
Вариант 9
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 156 b) 51А16 c) 1110101002 d) 138
3. Беззнаковым 8-разрядным представлением числа 93 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -71.
Вариант 10
1. Укажите десятичный эквивалент числа, прямой код которого 10101011 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 11138 b) 30С16 c) 1110102 d) 244
3. Беззнаковым 8-разрядным представлением числа 39 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -47.
Вариант 11
1. Укажите десятичный эквивалент числа, прямой код которого 101111010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) FВ16 b) 277 c) 1010110112 d) 538
3. Беззнаковым 8-разрядным представлением числа 54 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11110110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -81.
Вариант 12
1. Укажите десятичный эквивалент числа, прямой код которого 10010011 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1000011102 b) 5С116 c) 199 d) 578
3. Беззнаковым 8-разрядным представлением числа 66 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -33.
Вариант 13
1. Укажите десятичный эквивалент числа, прямой код которого 10110111 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 333 b) 1А16 c) 1000010102 d) 438
3. Беззнаковым 8-разрядным представлением числа 63 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -114.
Вариант 14
1. Укажите десятичный эквивалент числа, прямой код которого 10110101 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 778 b) 13В16 c) 1111110102 d) 166
3. Беззнаковым 8-разрядным представлением числа 73 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011010 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -125.
Вариант 15
1. Укажите десятичный эквивалент числа, прямой код которого 10100001 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 22216 b) 157 c) 100112 d) 6138
3. Беззнаковым 8-разрядным представлением числа 68 является:
4. Укажите десятичный эквивалент числа, прямой код которого 1011\00110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -98.
1 | 2 | 3 | 4 | 5 | |
Вар 1 | -76 | c d | 00111111 | 212 | 11101111 |
Вар 2 | -88 | a c | 01001001 | 220 | 11110011 |
Вар 3 | -60 | c d | 01000100 | 214 | 11100101 |
Вар 4 | -90 | a d | 00111011 | 215 | 11110001 |
Вар 5 | -78 | c d | 00111101 | 213 | 11100111 |
Вар 6 | -60 | b c | 01000111 | 222 | 11101001 |
Вар 7 | -37 | b d | 01000001 | 246 | 11011011 |
Вар 8 | -58 | a c | 00111011 | 219 | 11001001 |
Вар 9 | -60 | a d | 01011101 | 215 | 11000111 |
Вар 10 | -43 | c d | 00100111 | 222 | 10111101 |
Вар 11 | -122 | a d | 00110110 | 246 | 10100010 |
Вар 12 | -19 | c d | 01000010 | 223 | 10100001 |
Вар 13 | -55 | b d | 00111111 | 220 | 11100001 |
Вар 14 | -53 | a d | 01001001 | 218 | 11111001 |
Вар 15 | -33 | b c | 01000100 | 166 | 11100010 |
Дидактический материал по теме «Представление чисел в компьютере. 8 класс»
Вариант 1
1. Укажите десятичный эквивалент числа, прямой код которого 11001100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 256 b) 11А16 c) 1010102 d) 438
3. Беззнаковым 8-разрядным представлением числа 63 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -111.
Вариант 2
1. Укажите десятичный эквивалент числа, прямой код которого 10101100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 738 b) 13С16 c) 1010102 d) 266
3. Беззнаковым 8-разрядным представлением числа 73 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -115.
Вариант 3
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 21С16 b) 257 c) 1110112 d) 638
3. Беззнаковым 8-разрядным представлением числа 68 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -101.
Вариант 4
1. Укажите десятичный эквивалент числа, прямой код которого 11011010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1011102 b) 1С116 c) 259 d) 538
3. Беззнаковым 8-разрядным представлением числа 59 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -113.
Вариант 5
1. Укажите десятичный эквивалент числа, прямой код которого 11001110 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 256 b) 21А16 c) 1011102 d) 338
3. Беззнаковым 8-разрядным представлением числа 61 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010101 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -103.
Вариант 6
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 6618 b) 9С16 c) 1011112 d) 366
3. Беззнаковым 8-разрядным представлением числа 71 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -105.
Вариант 7
1. Укажите десятичный эквивалент числа, прямой код которого 10100101 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 12С16 b) 157 c) 111111102 d) 338
3. Беззнаковым 8-разрядным представлением числа 65 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11110110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -91.
Вариант 8
1. Укажите десятичный эквивалент числа, прямой код которого 10111010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1001112 b) А1116 c) 159 d) 4008
3. Беззнаковым 8-разрядным представлением числа 59 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011011 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -73.
Вариант 9
1. Укажите десятичный эквивалент числа, прямой код которого 10111100 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 156 b) 51А16 c) 1110101002 d) 138
3. Беззнаковым 8-разрядным представлением числа 93 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11010111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -71.
Вариант 10
1. Укажите десятичный эквивалент числа, прямой код которого 10101011 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 11138 b) 30С16 c) 1110102 d) 244
3. Беззнаковым 8-разрядным представлением числа 39 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -47.
Вариант 11
1. Укажите десятичный эквивалент числа, прямой код которого 101111010 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) FВ16 b) 277 c) 1010110112d) 538
3. Беззнаковым 8-разрядным представлением числа 54 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11110110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -81.
Вариант 12
1. Укажите десятичный эквивалент числа, прямой код которого 10010011 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 1000011102 b) 5С116 c) 199 d) 578
3. Беззнаковым 8-разрядным представлением числа 66 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011111 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -33.
Вариант 13
1. Укажите десятичный эквивалент числа, прямой код которого 10110111 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 333 b) 1А16 c) 1000010102 d) 438
3. Беззнаковым 8-разрядным представлением числа 63 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011100 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -114.
Вариант 14
1. Укажите десятичный эквивалент числа, прямой код которого 10110101 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 778 b) 13В16 c) 1111110102 d) 166
3. Беззнаковым 8-разрядным представлением числа 73 является:
4. Укажите десятичный эквивалент числа, прямой код которого 11011010 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -125.
Вариант 15
1. Укажите десятичный эквивалент числа, прямой код которого 10100001 записан в 8-разрядном формате со знаком.
2. Какие из чисел можно сохранить в 8-разрядном беззнаковом формате?
а) 22216 b) 157 c) 100112 d) 6138
3. Беззнаковым 8-разрядным представлением числа 68 является:
4. Укажите десятичный эквивалент числа, прямой код которого 1011\00110 записан в 8-разрядном формате без знака.
5. Укажите 8-разрядное представление числа -98.
| 1 | 2 | 3 | 4 | 5 |
Вар 1 | -76 | c d | 00111111 | 212 | 11101111 |
Вар 2 | -88 | a c | 01001001 | 220 | 11110011 |
Вар 3 | -60 | c d | 01000100 | 214 | 11100101 |
Вар 4 | -90 | a d | 00111011 | 215 | 11110001 |
Вар 5 | -78 | c d | 00111101 | 213 | 11100111 |
Вар 6 | -60 | b c | 01000111 | 222 | 11101001 |
Вар 7 | -37 | b d | 01000001 | 246 | 11011011 |
Вар 8 | -58 | a c | 00111011 | 219 | 11001001 |
Вар 9 | -60 | a d | 01011101 | 215 | 11000111 |
Вар 10 | -43 | c d | 00100111 | 222 | 10111101 |
Вар 11 | -122 | a d | 00110110 | 246 | 10100010 |
Вар 12 | -19 | c d | 01000010 | 223 | 10100001 |
Вар 13 | -55 | b d | 00111111 | 220 | 11100001 |
Вар 14 | -53 | a d | 01001001 | 218 | 11111001 |
Вар 15 | -33 | b c | 01000100 | 166 | 11100010 |
Примерные вопросы для подготовки к контрольной работе за полугодие 9 класс. Системы счисления.
а)1168 б) 1968 в)2168 г)1153
а) А10 = 1997,25; б) A16 = 918; в) А8 = 145; г) A2 = 101010.
12x =910 3х =1510
10102 + 11112 10012 х 1012 Представление информации в ЭВМ
кодами разрядами цифрами коэффициентами
а) 128,3 Е+05; б) 0.789Е-4.
а) 0,0041 х102; б) -16,78 х10-3.
Основы логики
abcde aecad babas cabab
F = X &¬Y v ¬X & Y.
Моделирование
а) Один объект может иметь только одну модель б) Разные объекты могут описываться одной моделью в) Электрическая схема — это модель электрической цепи г) Модель полностью повторяет изучаемый объект
1) материальной моделью 2) вербальной моделью 3) образной моделью 4) знаковой моделью 1) иерархической модели 2) вербальной модели 3) материальной модели 4) табличной модели
1) все свойства данного объекта 2) существенные свойства данного объекта 3) несущественные свойства данного объекта
а) рисунок б) схема в) таблица г) формула
а) рисунок б) схема в) таблица г) формула
а) фотография б) схема в) текст г) формула а) словесные модели б) логические модели в) геометрические модели г) алгебраические модели
а) человек — анатомический скелет — манекен б) человек — медицинская карта — фотография в) автомобиль — рекламный буклет с техническими характеристиками автомобиля — атлас автомобильных дорог г) автомобиль — игрушечный автомобиль — техническое описание автомобиля Графы
__ Цикл — цепь, в которой начальная и конечная вершины совпадают. А, В, С, D соединены дорогами. Время проезда на автомобиле из города в город по соответствующим дорогам указано в таблице:
^ а) ABCD б) ACBD в) ADCB г) ABDC
|
Тесты Представление чисел в компьютере 8 класс с ответами
- Информация о материале
- Просмотров: 198
Тесты по информатике 8 класс. Тема: «Представление чисел в компьютере»
Правильный вариант ответа отмечен знаком +
1. К целым числам относятся:
а) √7
б) 1,94
в) 8/29
+ г) -9
2. Из чего состоит память компьютера?
а) разрядов
+ б) ячеек
в) битов
г) 0 и 1
3. Рассмотрите картинку. Что должно быть на месте вопроса?
а) 1
б) n
+ в) 0
г) n + 1
4. Представьте число 4910 в беззнаковом 8-ми разрядном формате.
+ а) 00110001
б) 11000100
в) 10001100
г) 00100011
тест 5. Как будет представлено число 1001011 в восьмиразрядном виде?
а) 10010110
б) 10010112
в) 1001011
+ г) 01001011
6. Число 11100010 представлено в восьмиразрядном виде. Какое оно?
+ а) отрицательное
б) положительное
в) дробное
г) нет правильного ответа
7. Дано число 829000000. Его можно представить в виде:
+ а) 82,9 * 107
б) 82,9 * 106
в) 829 * 107
г) 8,29 * 106
8. Имеется беззнаковое целое число 00110010. Какое это компьютерное представление числа?
а) шестнадцатиразрядное
+ б) восьмиразрядное
в) пятнадцатиразрядное
г) двухразрядное
9. Дано число 00111111. Определите, к какому десятизначному числу оно соответствует?
+ а) 63
б) 62
в) -63
г) -61
10. Дано число 2150000 = 0,215 *107. Определите мантиссу числа.
а) 7
+ б) 0,215
в) 107
г) 215
Калькулятор дополнения до двух
Вот калькулятор с дополнением до двух (или калькулятор с дополнением до двух), фантастический инструмент, который поможет вам найти , противоположное любому двоичному числу , и превратить это двоичное дополнение в десятичное значение. У вас есть возможность узнать , что представляет собой два дополнительных представления , и , как работать с отрицательными числами в двоичной системе . В тексте вы также можете найти, как работает этот конвертер с двумя дополнениями или как вручную преобразовать любой двоичный знак со знаком в десятичный.
Как работать с отрицательными числами в двоичном формате? — представление в виде дополнения до 2
В двоичной системе все числа представляют собой комбинацию двух цифр: 0
или 1
. Каждая цифра соответствует степени 2, начиная справа.
Например, 12
в двоичном формате — это 1100
, так как 12 = 8 + 4 = 1 * 2³ + 1 * 2² + 0 * 2¹ + 0 * 2⁰
(в экспоненциальном представлении). Расширенная версия двоичной системы — это шестнадцатеричная система (в которой используется основание 16 вместо основания 2).Последний часто используется во многих компьютерных программах и системах.
Изучение двоичной системы приводит к возникновению многих естественных вопросов — а как насчет отрицательных чисел в двоичной системе? Или как вычесть двоичные числа? Поскольку мы можем использовать только 1
, чтобы показать, что присутствует что-то , или 0
, чтобы обозначить отсутствие , что вещь , есть два основных подхода:
Представление с дополнением до двух , или, другими словами, знаковая запись — первый бит говорит о знаке.Принято считать, что число с ведущим
1
отрицательное , а ведущее0
обозначает положительное значение . В 8-битном представлении мы можем записать любое число от -128 до 127. Название происходит от того факта, что отрицательное число является дополнением до двух положительного.Беззнаковая запись — представление, поддерживающее только положительные значения. Его преимущество перед знаковым состоит в том, что в рамках той же 8-битной системы мы можем получить любое число от 0 до 255.
Пока нам нужно складывать или умножать положительные числа, беззнаковое представление достаточно. Но, как правило, более практичным решением является работа и с отрицательными числами. В представлении дополнения до 2 полезно то, что вычитание эквивалентно сложению отрицательного числа, с которым мы можем справиться.
Как пользоваться калькулятором с дополнением до двух? Преобразователь с двоичным дополнением на практике
Всякий раз, когда вы хотите преобразовать десятичное число в двоичное значение в дополнительном представлении до двух, выполните следующие действия:
Выберите количество бит в вашей записи.Чем выше значение, тем шире диапазон чисел, которые вы можете ввести.
Записать любое целое десятичное число в диапазоне, указанном в разделе
Decimal to binary
section.… и все — калькулятор дополнения до 2 сделает остальную работу! Он показывает эквивалентное двоичное число, а также его дополнение до двух.
Хотите вручную оценить результат? Вот как это делает калькулятор дополнения до двух:
Выберите количество бит в двоичном представлении.Предположим, нам нужны значения в 8-битной системе.
Запишите свое число, скажем 16. 16 в двоичном формате — это
1 0000
.Добавьте несколько первых
0
, чтобы число состояло из восьми цифр,0001 0000
.Переключите все цифры на противоположные (
0 → 1
и1 → 0
). В нашем случае0001 0000 → 1110 1111
.Добавьте 1 к этому значению,
1101 1111 + 1 = 1111 0000
.1110 0000
в представлении с дополнением до двух — это-16
в десятичной системе счисления и является дополнением до двух0010 0000
.
Послушайте, если вы хорошо разбираетесь в переключении цифр и добавлении единицы к двоичному значению, оценка отрицательных чисел в двоичном формате не представляет большого труда!
Преобразование двоичного дополнения в десятичное
Наш калькулятор с дополнением до 2 может также работать и наоборот — преобразовывать любые два дополнения в его десятичное значение.Давайте попробуем преобразовать 1011 1011
, двоичный код со знаком, в десятичный. Есть два полезных метода, которые помогут вам найти результат:
Преобразует этот двоичный знак со знаком в десятичное, как обычно, но умножает начальную цифру на
-1
вместо1
. Начиная справа:десятичный = 1 * 2⁰ + 1 * 2¹ + 0 * 2² + 1 * 2³ + 1 * 2⁴ + 1 * 2⁵ + 0 * 2⁶ - 1 * 2⁷
в десятичной системе = 1 + 2 + 8 + 16 + 32 - 128 = -69
Мы видим, что первая цифра —
1
, поэтому наше число отрицательное.Сначала найдите его два дополнения, затем преобразуйте значение в десятичное и вернитесь к исходному значению:- Цифры обратные,
1011 1011 → 0100 0100
. - Добавьте единицу,
0100 0100 + 1 = 0100 0101
. - Преобразование в десятичное (начиная справа),
десятичное = 1 * 2⁰ + 0 * 2¹ + 1 * 2² + 0 * 2³ + 0 * 2⁴ + 0 * 2⁵ + 1 * 2⁶ + 0 * 2⁷
. -
в десятичной системе = 1 + 4 + 64 = 69
. - Поскольку
69
является абсолютным значением нашего начального (отрицательного) двоичного файла, добавьте перед ним знак минус. -
1011 1011
— это-69
в двоичной системе с дополнением до двух.
- Цифры обратные,
Преобразование двоичного кода со знаком в десятичную таблицу
Если вы хотите найти любое целое число в восьмибитном представлении с дополнением до двух, вам может пригодиться эта таблица. Вы можете увидеть как значение, так и его два дополнения в одной строке.
Если вас интересует работа со значениями разного количества битов, просто воспользуйтесь нашим калькулятором дополнения до двух, чтобы сэкономить время и силы!
десятичное | двоичный | десятичное | двоичный |
---|---|---|---|
0 | 0000 0000 | ||
1 | 0000 0001 | -1 | 1111 1111 |
2 | 0000 0010 | -2 | 1111 1110 |
3 | 0000 0011 | -3 | 1111 1101 |
4 | 0000 0100 | -4 | 1111 1100 |
5 | 0000 0101 | -5 | 1111 1011 |
6 | 0000 0110 | -6 | 1111 1010 |
7 | 0000 0111 | -7 | 1111 1001 |
8 | 0000 1000 | -8 | 1111 1000 |
9 | 0000 1001 | -9 | 1111 0111 |
10 | 0000 1010 | -10 | 1111 0110 |
11 | 0000 1011 | -11 | 1111 0101 |
12 | 0000 1100 | -12 | 1111 0100 |
13 | 0000 1101 | -13 | 1111 0011 |
14 | 0000 1110 | -14 | 1111 0010 |
15 | 0000 1111 | -15 | 1111 0001 |
16 | 0001 0000 | -16 | 1111 0000 |
17 | 0001 0001 | -17 | 1110 1111 |
18 | 0001 0010 | -18 | 1110 1110 |
19 | 0001 0011 | -19 | 1110 1101 |
20 | 0001 0100 | -20 | 1110 1100 |
21 | 0001 0101 | -21 | 1110 1011 |
22 | 0001 0110 | -22 | 1110 1010 |
23 | 0001 0111 | -23 | 1110 1001 |
24 | 0001 1000 | -24 | 1110 1000 |
25 | 0001 1001 | -25 | 1110 0111 |
26 | 0001 1010 | -26 | 1110 0110 |
27 | 0001 1011 | -27 | 1110 0101 |
28 | 0001 1100 | -28 | 1110 0100 |
29 | 0001 1101 | -29 | 1110 0011 |
30 | 0001 1110 | -30 | 1110 0010 |
31 | 0001 1111 | -31 | 1110 0001 |
32 | 0010 0000 | -32 | 1110 0000 |
33 | 0010 0001 | -33 | 1101 1111 |
34 | 0010 0010 | -34 | 1101 1110 |
35 | 0010 0011 | -35 | 1101 1101 |
36 | 0010 0100 | -36 | 1101 1100 |
37 | 0010 0101 | -37 | 1101 1011 |
38 | 0010 0110 | -38 | 1101 1010 |
39 | 0010 0111 | -39 | 1101 1001 |
40 | 0010 1000 | -40 | 1101 1000 |
41 | 0010 1001 | -41 | 1101 0111 |
42 | 0010 1010 | -42 | 1101 0110 |
43 | 0010 1011 | -43 | 1101 0101 |
44 | 0010 1100 | -44 | 1101 0100 |
45 | 0010 1101 | -45 | 1101 0011 |
46 | 0010 1110 | -46 | 1101 0010 |
47 | 0010 1111 | -47 | 1101 0001 |
48 | 0011 0000 | -48 | 1101 0000 |
49 | 0011 0001 | -49 | 1100 1111 |
50 | 0011 0010 | -50 | 1100 1110 |
51 | 0011 0011 | -51 | 1100 1101 |
52 | 0011 0100 | -52 | 1100 1100 |
53 | 0011 0101 | -53 | 1100 1011 |
54 | 0011 0110 | -54 | 1100 1010 |
55 | 0011 0111 | -55 | 1100 1001 |
56 | 0011 1000 | -56 | 1100 1000 |
57 | 0011 1001 | -57 | 1100 0111 |
58 | 0011 1010 | -58 | 1100 0110 |
59 | 0011 1011 | -59 | 1100 0101 |
60 | 0011 1100 | -60 | 1100 0100 |
61 | 0011 1101 | -61 | 1100 0011 |
62 | 0011 1110 | -62 | 1100 0010 |
63 | 0011 1111 | -63 | 1100 0001 |
64 | 0100 0000 | -64 | 1100 0000 |
65 | 0100 0001 | -65 | 1011 1111 |
66 | 0100 0010 | -66 | 1011 1110 |
67 | 0100 0011 | -67 | 1011 1101 |
68 | 0100 0100 | -68 | 1011 1100 |
69 | 0100 0101 | -69 | 1011 1011 |
70 | 0100 0110 | -70 | 1011 1010 |
71 | 0100 0111 | -71 | 1011 1001 |
72 | 0100 1000 | -72 | 1011 1000 |
73 | 0100 1001 | -73 | 1011 0111 |
74 | 0100 1010 | -74 | 1011 0110 |
75 | 0100 1011 | -75 | 1011 0101 |
76 | 0100 1100 | -76 | 1011 0100 |
77 | 0100 1101 | -77 | 1011 0011 |
78 | 0100 1110 | -78 | 1011 0010 |
79 | 0100 1111 | -79 | 1011 0001 |
80 | 0101 0000 | -80 | 1011 0000 |
81 | 0101 0001 | -81 | 1010 1111 |
82 | 0101 0010 | -82 | 1010 1110 |
83 | 0101 0011 | -83 | 1010 1101 |
84 | 0101 0100 | -84 | 1010 1100 |
85 | 0101 0101 | -85 | 1010 1011 |
86 | 0101 0110 | -86 | 1010 1010 |
87 | 0101 0111 | -87 | 1010 1001 |
88 | 0101 1000 | -88 | 1010 1000 |
89 | 0101 1001 | -89 | 1010 0111 |
90 | 0101 1010 | -90 | 1010 0110 |
91 | 0101 1011 | -91 | 1010 0101 |
92 | 0101 1100 | -92 | 1010 0100 |
93 | 0101 1101 | -93 | 1010 0011 |
94 | 0101 1110 | -94 | 1010 0010 |
95 | 0101 1111 | -95 | 1010 0001 |
96 | 0110 0000 | -96 | 1010 0000 |
97 | 0110 0001 | -97 | 1001 1111 |
98 | 0110 0010 | -98 | 1001 1110 |
99 | 0110 0011 | -99 | 1001 1101 |
100 | 0110 0100 | -100 | 1001 1100 |
101 | 0110 0101 | -101 | 1001 1011 |
102 | 0110 0110 | -102 | 1001 1010 |
103 | 0110 0111 | -103 | 1001 1001 |
104 | 0110 1000 | -104 | 1001 1000 |
105 | 0110 1001 | -105 | 1001 0111 |
106 | 0110 1010 | -106 | 1001 0110 |
107 | 0110 1011 | -107 | 1001 0101 |
108 | 0110 1100 | -108 | 1001 0100 |
109 | 0110 1101 | -109 | 1001 0011 |
110 | 0110 1110 | -110 | 1001 0010 |
111 | 0110 1111 | -111 | 1001 0001 |
112 | 0111 0000 | -112 | 1001 0000 |
113 | 0111 0001 | -113 | 1000 1111 |
114 | 0111 0010 | -114 | 1000 1110 |
115 | 0111 0011 | -115 | 1000 1101 |
116 | 0111 0100 | -116 | 1000 1100 |
117 | 0111 0101 | -117 | 1000 1011 |
118 | 0111 0110 | -118 | 1000 1010 |
119 | 0111 0111 | -119 | 1000 1001 |
120 | 0111 1000 | -120 | 1000 1000 |
121 | 0111 1001 | -121 | 1000 0111 |
122 | 0111 1010 | -122 | 1000 0110 |
123 | 0111 1011 | -123 | 1000 0101 |
124 | 0111 1100 | -124 | 1000 0100 |
125 | 0111 1101 | -125 | 1000 0011 |
126 | 0111 1110 | -126 | 1000 0010 |
127 | 0111 1111 | -127 | 1000 0001 |
-128 | 1000 0000 |
Как преобразовать десятичное число в 8-битное двоичное число со знаком?
8-битовое целое число со знаком резервирует для знака бит самого высокого порядка. 5 или 32
.0 или 1
, который переходит в 1
один раз.
1111 1101
Таким образом, наше 8-битное представление числа -125
со знаком — 11111101
.
Tech Stuff — шестнадцатеричный, десятичный и двоичный
Основной единицей, используемой в компьютерном мире, является байт (он же октет), байт (или октет) состоит из 8 бит (он же двоичные цифры). Большинство современных систем используют число, кратное байту, таким образом, 16-разрядная система состоит из 2 байтов (2 x 8 = 16), 32-разрядная система имеет 4 байта (4 x 8 = 32), а 64-разрядная система имеет 8 байтов (8 x 8 = 64).Термин слово , как и в описании 32-битного слова, в значительной степени исчез из технической лексики.
Содержимое любого байта, например, в ячейке памяти или в сети, может быть выражено во многих системах нумерации . Чаще всего используются системы счисления: , десятичное, , шестнадцатеричное, , шестнадцатеричное, и двоичное, , :
Система нумерации | База | Диапазон | Банкноты |
Десятичное число | база 10 | 0 — 1,2,3… | Самая распространенная система нумерации — доллары, метрика и т. Д. Байт (8 бит) имеет 256 возможных значений в диапазоне 0 — 255 |
двоичный | база 2 | 0–1 | Базовый уровень, на котором работает электронная схема в компьютере — один бит. |
Шестнадцатеричное | база 16 | 0-9, A-F | Каждый шестнадцатеричный символ представляет 4 бита (0-15 десятичных), что называется полубайтом (маленький байт — честно!).Байт (или октет) составляет 8 бит, поэтому всегда представлен двумя шестнадцатеричными символами в диапазоне от 00 до FF. |
Историческая справка: Когда-то давно, когда мир и даже автор этой страницы были молоды, компьютеры были построены с использованием 12-битных, 24-битных и даже 36-битных слов (это имело определенный смысл тогда как раз сегодня выглядит странно). Каждый из этих размеров слова делится на 3 и использует восьмеричную систему нумерации (основание 8). Каждый 3-битный элемент содержал 8 значений в диапазоне от 0 до 7. Таким образом, ячейка памяти с 12-битным двоичным значением 000.001.100.111 будет записано в восьмеричной системе счисления 0147.
Битовая нумерация
При работе с двоичным кодом каждый бит в байте (октете) может потребоваться идентифицировать с помощью метода, называемого нумерацией битов. Нумерация битов может сильно сбивать с толку, поскольку различные стандартные органы принимают разные соглашения. Все следующие действительные и используемые правила нумерации битов для описания 8-битного байта (октета).
Содержимое памяти | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Условные обозначения нумерации бит | ||||||||
Основание слева направо 0 (IETF) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Основание слева направо 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Справа налево основание 1 (ITU) | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Мощность 2 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Всегда проверяйте, какое соглашение используется в любой спецификации.Мы смирились с неизбежным и используем стандарт Left to right base 0 (IETF) , поскольку благодаря Интернету он широко используется и, надеюсь, столь же широко понимается. Обоснование этого стандарта IETF состоит в том, что он также недвусмысленно представляет то, что называется сетевым порядком , то есть бит 0 сначала идет в сеть, бит 1 — секунду и так далее. Биты также имеют тенденцию выходить из сети в том же порядке, в котором они поступали. Использование сетевого порядка необходимо, поскольку внутреннее (машинное) представление данных может сильно различаться (вся эта чушь с прямым порядком байтов и прямым порядком байтов), но когда данные загружаются в сеть, они должны быть в согласованном порядке, который может использоваться любая система, независимо от ее внутреннего представления, которая хочет использовать данные.
Наконец, при работе с двоичным кодом вы часто будете сталкиваться с терминами наиболее значимый бит (s) (MSB) и наименее значимый бит (s) (LSB). MSB всегда находится слева, а LSB — справа. Таким образом, при использовании нумерации битов IETF MSB — это бит 0, а LSB — бит 7, тогда как при использовании битовой нумерации ITU MSB — это бит 8, а LSB — бит 1. Совершенно ясно, не так ли?
8-битный байт (октет) Таблица преобразования:
Преобразование десятичного числа IPv4 в шестнадцатеричное
Десятичное число | Шестнадцатеричный | двоичный | Десятичное число | Шестнадцатеричный | двоичный |
0 | 00 | 0000 0000 | 128 | 80 | 1000 0000 |
1 | 01 | 0000 0001 | 129 | 81 | 1000 0001 |
2 | 02 | 0000 0010 | 130 | 82 | 1000 0010 |
3 | 03 | 0000 0011 | 131 | 83 | 1000 0011 |
4 | 04 | 0000 0100 | 132 | 84 | 1000 0100 |
5 | 05 | 0000 0101 | 133 | 85 | 1000 0101 |
6 | 06 | 0000 0110 | 134 | 86 | 1000 0110 |
7 | 07 | 0000 0111 | 135 | 87 | 1000 0111 |
8 | 08 | 0000 1000 | 136 | 88 | 1000 1000 |
9 | 09 | 0000 1001 | 137 | 89 | 1000 1001 |
10 | 0A | 0000 1010 | 138 | 8A | 1000 1010 |
11 | 0Б | 0000 1011 | 139 | 8Б | 1000 1011 |
12 | 0C | 0000 1100 | 140 | 8C | 1000 1100 |
13 | 0D | 0000 1101 | 141 | 8D | 1000 1101 |
14 | 0E | 0000 1110 | 142 | 8E | 1000 1110 |
15 | 0F | 0000 1111 | 143 | 8F | 1000 1111 |
16 | 10 | 0001 0000 | 144 | 90 | 1001 0000 |
17 | 11 | 0001 0001 | 145 | 91 | 1001 0001 |
18 | 12 | 0001 0010 | 146 | 92 | 1001 0010 |
19 | 13 | 0001 0011 | 147 | 93 | 1001 0011 |
20 | 14 | 0001 0100 | 148 | 94 | 1001 0100 |
21 | 15 | 0001 0101 | 149 | 95 | 1001 0101 |
22 | 16 | 0001 0110 | 150 | 96 | 1001 0110 |
23 | 17 | 0001 0111 | 151 | 97 | 1001 0111 |
24 | 18 | 0001 1000 | 152 | 98 | 1001 1000 |
25 | 19 | 0001 1001 | 153 | 99 | 1001 1001 |
26 | 1А | 0001 1010 | 154 | 9A | 1001 1010 |
27 | 1Б | 0001 1011 | 155 | 9Б | 1001 1011 |
28 | 1С | 0001 1100 | 156 | 9C | 1001 1100 |
29 | 1D | 0001 1101 | 157 | 9D | 1001 1101 |
30 | 1E | 0001 1110 | 158 | 9E | 1001 1110 |
31 | 1 этаж | 0001 1111 | 159 | 9F | 1001 1111 |
32 | 20 | 0010 0000 | 160 | A0 | 1010 0000 |
33 | 21 | 0010 0001 | 161 | A1 | 1010 0001 |
34 | 22 | 0010 0010 | 162 | A2 | 1010 0010 |
35 | 23 | 0010 0011 | 163 | A3 | 1010 0011 |
36 | 24 | 0010 0100 | 164 | A4 | 1010 0100 |
37 | 25 | 0010 0101 | 165 | A5 | 1010 0101 |
38 | 26 | 0010 0110 | 166 | A6 | 1010 0110 |
39 | 27 | 0010 0111 | 167 | A7 | 1010 0111 |
40 | 28 | 0010 1000 | 168 | A8 | 1010 1000 |
41 | 29 | 0010 1001 | 169 | A9 | 1010 1001 |
42 | 2А | 0010 1010 | 170 | AA | 1010 1010 |
43 | 2Б | 0010 1011 | 171 | AB | 1010 1011 |
44 | 2C | 0010 1100 | 172 | AC | 1010 1100 |
45 | 2D | 0010 1101 | 173 | нашей эры | 1010 1101 |
46 | 2E | 0010 1110 | 174 | AE | 1010 1110 |
47 | 2F | 0010 1111 | 175 | AF | 1010 1111 |
48 | 30 | 0011 0000 | 176 | B0 | 1011 0000 |
49 | 31 | 0011 0001 | 177 | B1 | 1011 0001 |
50 | 32 | 0011 0010 | 178 | B2 | 1011 0010 |
51 | 33 | 0011 0011 | 179 | B3 | 1011 0011 |
52 | 34 | 0011 0100 | 180 | B4 | 1011 0100 |
53 | 35 | 0011 0101 | 181 | B5 | 1011 0101 |
54 | 36 | 0011 0110 | 182 | B6 | 1011 0110 |
55 | 37 | 0011 0111 | 183 | B7 | 1011 0111 |
56 | 38 | 0011 1000 | 184 | B8 | 1011 1000 |
57 | 39 | 0011 1001 | 185 | B9 | 1011 1001 |
58 | 3A | 0011 1010 | 186 | BA | 1011 1010 |
59 | 3Б | 0011 1011 | 187 | BB | 1011 1011 |
60 | 3C | 0011 1100 | 188 | до н.э. | 1011 1100 |
61 | 3D | 0011 1101 | 189 | BD | 1011 1101 |
62 | 3E | 0011 1110 | 190 | BE | 1011 1110 |
63 | 3F | 0011 1111 | 191 | BF | 1011 1111 |
64 | 40 | 0100 0000 | 192 | C0 | 1100 0000 |
65 | 41 | 0100 0001 | 193 | C1 | 1100 0001 |
66 | 42 | 0100 0010 | 194 | C2 | 1100 0010 |
67 | 43 | 0100 0011 | 195 | C3 | 1100 0011 |
68 | 44 | 0100 0100 | 196 | C4 | 1100 0100 |
69 | 45 | 0100 0101 | 197 | C5 | 1100 0101 |
70 | 46 | 0100 0110 | 198 | C6 | 1100 0110 |
71 | 47 | 1100 0111 | 199 | C7 | 1100 0111 |
72 | 48 | 0100 1000 | 200 | C8 | 1100 1000 |
73 | 49 | 0100 1001 | 201 | C9 | 1100 1001 |
74 | 4A | 0100 1010 | 202 | CA | 1100 1010 |
75 | 4Б | 0100 1011 | 203 | CB | 1100 1011 |
76 | 4C | 0100 1100 | 204 | CC | 1100 1100 |
77 | 4D | 0100 1101 | 205 | CD | 1100 1101 |
78 | 4E | 0100 1110 | 206 | CE | 1100 1110 |
79 | 4F | 1100 1111 | 207 | CF | 1100 1111 |
80 | 50 | 0101 0000 | 208 | D0 | 1101 0000 |
81 | 51 | 0101 0001 | 209 | D1 | 1101 0001 |
82 | 52 | 0101 0010 | 210 | D2 | 1101 0010 |
83 | 53 | 0101 0011 | 211 | D3 | 1101 0011 |
84 | 54 | 0101 0100 | 212 | D4 | 1101 0100 |
85 | 55 | 0101 0101 | 213 | D5 | 1101 0101 |
86 | 56 | 0101 0110 | 214 | D6 | 1101 0110 |
87 | 57 | 1101 0111 | 215 | D7 | 1101 0111 |
88 | 58 | 0101 1000 | 216 | D8 | 1101 1000 |
89 | 59 | 0101 1001 | 217 | D9 | 1101 1001 |
90 | 5А | 0101 1010 | 218 | DA | 1101 1010 |
91 | 5Б | 0100 1011 | 219 | DB | 1101 1011 |
92 | 5C | 0101 1100 | 220 | DC | 1101 1100 |
93 | 5D | 0101 1101 | 221 | DD | 1101 1101 |
94 | 5E | 0101 1110 | 222 | DE | 1101 1110 |
95 | 5F | 1101 1111 | 223 | DF | 1101 1111 |
96 | 60 | 0110 0000 | 224 | E0 | 1110 0000 |
97 | 61 | 0110 0001 | 225 | E1 | 1110 0001 |
98 | 62 | 0110 0010 | 226 | E2 | 1110 0010 |
99 | 63 | 0110 0011 | 227 | E3 | 1110 0011 |
100 | 64 | 0110 0100 | 228 | E4 | 1110 0100 |
101 | 65 | 0110 0101 | 229 | E5 | 1110 0101 |
102 | 66 | 0110 0110 | 230 | E6 | 1110 0110 |
103 | 67 | 1110 0111 | 231 | E7 | 1110 0111 |
104 | 68 | 0110 1000 | 232 | E8 | 1110 1000 |
105 | 69 | 0110 1001 | 233 | E9 | 1110 1001 |
106 | 6А | 0110 1010 | 234 | EA | 1110 1010 |
107 | 6Б | 0110 1011 | 235 | EB | 1110 1011 |
108 | 6C | 0110 1100 | 236 | EC | 1110 1100 |
109 | 6D | 0110 1101 | 237 | ED | 1110 1101 |
110 | 6E | 0110 1110 | 238 | EE | 1110 1110 |
111 | 6F | 1110 1111 | 239 | EF | 1110 1111 |
112 | 70 | 0111 0000 | 240 | F0 | 1111 0000 |
113 | 71 | 0111 0001 | 241 | F1 | 1111 0001 |
114 | 72 | 0111 0010 | 242 | F2 | 1111 0010 |
115 | 73 | 0111 0011 | 243 | F3 | 1111 0011 |
116 | 74 | 0111 0100 | 244 | F4 | 1111 0100 |
117 | 75 | 0111 0101 | 245 | F5 | 1111 0101 |
118 | 76 | 0111 0110 | 246 | F6 | 1111 0110 |
119 | 77 | 1111 0111 | 247 | F7 | 1111 0111 |
120 | 78 | 0111 1000 | 248 | F8 | 1111 1000 |
121 | 79 | 0111 1001 | 249 | F9 | 1111 1001 |
122 | 7A | 0111 1010 | 250 | FA | 1111 1010 |
123 | 7Б | 0111 1011 | 251 | FB | 1111 1011 |
124 | 7C | 0111 1100 | 252 | FC | 1111 1100 |
125 | 7D | 0111 1101 | 253 | FD | 1111 1101 |
126 | 7E | 0111 1110 | 254 | FE | 1111 1110 |
127 | 7F | 0111 1111 | 255 | FF | 1111 1111 |
Преобразование десятичного числа IPv4 в шестнадцатеричное
Чтобы преобразовать десятичный IPv4-адрес с точками в шестнадцатеричный, возьмите каждое десятичное значение, разделенное точками, и преобразуйте его с помощью шестнадцатеричного калькулятора (стандартный калькулятор Windows в научном или программистском режиме выполнит эту работу).Это даст:
IP-адрес в десятичном формате с точками = 192.168.0.5 Десятичное 192 = Шестнадцатеричное = C0 Десятичный 168 = Шестнадцатеричный = A8 Десятичный 0 = Шестнадцатеричный = 00 Десятичный 5 = Шестнадцатеричный = 05 IP-адрес в шестнадцатеричном формате с точками = C0.A8.00.05
Проблемы, комментарии, предложения, исправления (включая битые ссылки) или что-то добавить? Выделите время из напряженной жизни, чтобы «написать нам» (вверху экрана), веб-мастеру (внизу) или получить информационную поддержку на zytrax. У вас будет теплое внутреннее сияние до конца дня.
арифметических операций над двоичными числами
арифметических операций над двоичными числамиАрифметические операции над двоичными числами
Из-за его широкого использования мы сосредоточимся на сложении и вычитании для представления Two Complement.
Приятная особенность Two’s Complement заключается в том, что сложение и вычитание двух дополнительных чисел работает без необходимости разделять знаковые биты (знак операндов и результатов эффективно встроен в вычисление сложения / вычитания).
Помните: −2 n − 1 ≤ Два дополнения ≤ 2 n − 1 -1
−8 ≤ х [4] ≤ +7
−128 ≤ x [8] ≤ +127
−32768 ≤ x [16] ≤ +32767
−2147483648 ≤ x [32] ≤ +2147483647
Что, если результат выходит за рамки представления?
Если результат арифметической операции слишком велик (положительный или отрицательный), чтобы поместиться в результирующую группу битов, то происходит арифметическое переполнение .Обычно программист сам решает, как поступить в этой ситуации.
Дополнение до двух
Сложите значения и сбросьте бит переноса.
Примеры: с использованием 8-битных чисел в дополнительном коде.
- Добавить от −8 до +3
(+3) 0000 0011 + (- 8) 1111 1000 ----------------- (−5) 1111 1011
- Добавить −5 к −2
(−2) 1111 1110 + (- 5) 1111 1011 ----------------- (−7) 1 1111 1001: отбросить вынос
Правило переполнения для добавления
Если добавлены 2 числа с дополнением до двух, и оба они имеют одинаковый знак (как положительные, так и отрицательные), то переполнение происходит тогда и только тогда, когда результат имеет противоположный знак.Переполнение никогда не происходит при добавлении операндов с разными знаками.
т.е. | Сложение двух положительных чисел должно дать положительный результат. |
Добавление двух отрицательных чисел должно дать отрицательный результат. |
Переполнение происходит, если
- (+ А) + (+ В) = -С
- (-A) + (-B) = + C
Пример: использование 4-битных чисел с дополнением до двух (−8 ≤ x ≤ +7)
(−7) 1001 + (- 6) 1010 ------------ (−13) 1 0011 = 3: переполнение (наибольшее число −ve равно −8)
Пара определений:
Вычитаемое: | что вычитается |
Минухенд: | из чего вычитается |
Пример: 612 — 485 = 127
485 — вычитаемое, 612 — минухенд, 127 — это результат
Вычитание с дополнением до двух
Обычно выполняется путем отрицания вычитаемого и добавления его к минухенду.Любой вынос отбрасывается.
Пример: использование 8-битных чисел с дополнением до двух (-128 ≤ х ≤ +127)
(+8) 0000 1000 0000 1000 - (+ 5) 0000 0101 -> Отказ -> +1111 1011 ----- ----------- (+3) 1 0000 0011: сбросить вынос
Правило переполнения для вычитания
Если 2 Два дополнительных числа вычитаются, и их знаки различны, то переполнение происходит тогда и только тогда, когда результат имеет тот же знак, что и вычитаемое.
Переполнение происходит, если
- (+ А) — (-В) = -С
- (-А) — (+ В) = + С
Пример: использование 4-битных чисел с дополнением до двух (−8 ≤ x ≤ +7)
Вычтем −6 из +7
(+7) 0111 0111 - (- 6) 1010 -> Отказ -> +0110 ---------- ----- 13 1101 = −8 + 5 = −3: переполнение
Числовой круг для 4-битных чисел с дополнением до двух
Числа можно складывать или вычитать, перемещая числовой круг.
- По часовой стрелке для сложения
- Против часовой стрелки для вычитания (добавления отрицательного числа)
Переполнение происходит при переходе
- от +2 n − 1 −1 до −2 n − 1 при добавлении
- от −2 n − 1 до +2 n − 1 −1 при вычитании
Сводка дополнения до двух
Дополнение
- Сложить значения, отбросив бит переноса
Вычитание
- Отменить вычитаемое и сложить, отбрасывая любой переносимый бит
Перелив
Умножение и деление
Нет проблем с беззнаковыми (всегда положительными) числами, просто используйте те же стандартные приемы, что и в базе 10. (помня, что x [n] & times y [n] = z [2n])
- Пример умножения 1100101 2 × 111101 2 (101 10 × 61 10 )
1100101 101 10 × 111101 × 61 10 ------- 1100101 +1100101 +1100101 +1100101 +1100101 ------------- ????????????? -------------
Проще использовать промежуточные результаты:
1100101 101 10 × 111101 × 61 10 ------- 1100101 +1100101 ---------- 111111001 +1100101 ------------ 10100100001 +1100101 ------------- 101101110001 +1100101 ------------- 1100000010001 = 4096 10 + 2048 10 + 16 10 + 1 = 6161 10 -------------
- Пример деления: 100101 2 ÷ 101 2 (37 10 ÷ 5 10 )
111 результат = 7 10 ------- 101) 100101 −101 --- 1000 −101 --- 111 −101 --- Остаток 10 = 2 10 ---
Умножение с дополнением до двух не может быть выполнено с помощью стандартной техники, поскольку, что касается самой машины, для Y [n]:
−Y º 0 — Y º 2 n — Y
поскольку при вычитании из нуля необходимо «заимствовать» из следующего столбца слева.
Пример:
−19 10 в 8-битном формате | = (2 8 -19) 10 |
= 256 10 -19 10 | |
= 237 10 | |
= 11101101 2 без знака | |
= −2 7 + 2 6 + 2 5 + 2 3 + 2 2 + 2 0 | |
= −128 + 64 + 32 + 8 + 4 + 1 | |
= −128 + 109 | |
= −19 10 с дополнением до двух |
Рассмотрим X × (−Y)
Внутренняя манипуляция −Y — это как 2 n — Y
Следовательно, X × (−Y) знак равно X × (2 n — Y) знак равно 2 n × X — X × Y
Однако ожидаемый результат должен быть 2 2n — (X × Y)
поскольку x [n] × y [n] = z [2n]
Может выполнять умножение путем преобразования чисел дополнения до двух в их абсолютные значения, а затем отрицания результата, если знаки операндов различаются.
Аналогично делению Two Complement. Может преобразовывать операнды в их абсолютные значения, выполнять деление, а затем отрицать результат, если знаки операндов разные.
Большинство современных архитектур реализуют более сложные алгоритмы умножения и деления чисел с дополнением до двух.
За рамками этого курса!
[ Индекс ]
последнее обновление: 21-окт-02
Ян Харрис
hlist | Преобразовать кодек в HList | uint8.hlist | Инт :: HNil | 8 | 8 | 42 :: HNil ⇔ 2a₁₆ (1 байт) |
в паре с | Объединить два кодека в кортеж из 2 частей | uint8 в паре с uint16 | (Инт, Инт) | 24 | 24 | (0x12, 0x3456) ⇔ 12 34 56₁₆ (3 байта) |
в паре с | Объединить два кодека в кортеж из 2 частей | uint8 в паре с uint16 в паре с cstring | ((Инт, Инт), Строка) | 24 | ∞ | ((0x12, 0x3456), «abc») ⇔ 12 34 56 61 62 63 00₁₆ (7 байтов) |
~ | Объединить два кодека в кортеж из 2 частей | uint8 ~ uint16 | (Инт, Инт) | 24 | 24 | (0x12, 0x3456) ⇔ 12 34 56₁₆ (3 байта) |
~ | Объединить два кодека в кортеж из 2 частей | uint8 ~ uint16 ~ cstring | ((Инт, Инт), Строка) | 24 | ∞ | ((0x12, 0x3456), «abc») ⇔ 12 34 56 61 62 63 00₁₆ (7 байтов) |
плоский левый пар | Удаляет левое вложение кортежей и преобразует их в HList | . uint8 ~ uint16 ~ cstring flattenLeftPairs | Int :: Int :: String :: HNil | 24 | ∞ | 0x12 :: 0x3456 :: "abc" :: HNil ⇔ 12 34 56 61 62 63 00₁₆ (7 байт) |
падение влево | Объединить два кодека, отбросив значение единицы левого | константа (0x12) dropLeft uint8 | Внутр. | 16 | 16 | 0x68 ⇔ 12 68₁₆ (2 байта) |
~> | Объединить два кодека, отбросив значение единицы левого | константа (0x12) ~> uint8 | Внутр. | 16 | 16 | 0x68 ⇔ 12 68₁₆ (2 байта) |
капля справа | Объединить два кодека, отбросив значение единицы правого | uint8 Константа dropRight (0x12) | Внутр. | 16 | 16 | 0x68 ⇔ 68 12₁₆ (2 байта) |
<~ | Объединить два кодека, отбросив значение единицы правого | uint8 <~ константа (0x12) | Внутр. | 16 | 16 | 0x68 ⇔ 68 12₁₆ (2 байта) |
плоская застежка-молния | Объедините два кодека в кортеж из 2, где второй кодек выбирается в зависимости от результата первого. | uint8 flatZip {case i, если i <100 ⇒ uint8; case _ ⇒ uint16} | (Инт, Инт) | 8 | ∞ | (23, 42) ⇔ 17 2a₁₆ (2 байта) (112, 0x1234) ⇔ 70 12 34 (3 байта) |
>> ~ | Объедините два кодека в кортеж из 2, где второй кодек выбирается в зависимости от результата первого. | uint8 >> ~ {case i, если i <100 ⇒ uint8; case _ ⇒ uint16} | (Инт, Инт) | 8 | ∞ | (23, 42) ⇔ 17 2a₁₆ (2 байта) (112, 0x1234) ⇔ 70 12 34 (3 байта) |
потребляют | Декодирует левый кодек, а затем правый кодек в зависимости от левого результата, затем отбрасывает левое значение и возвращает только правое | byteAligned (bool).потребляют [Int] (isLarge ⇒ if (isLarge) uint16 else uint8) (_> 0xff) | Внутр. | 8 | ∞ | 255 ⇔ 00 ff₁₆ (2 байта) 256 ⇔ 80 01 00₁₆ (3 байта) 0x1234 ⇔ 80 12 34₁₆ (3 байта) |
:: | Объединить два кодека в HList | uint8 :: cstring | Инт :: Строка :: HNil | 8 | ∞ | 0x42 :: "zweiundvierzig" :: HNil ⇔ 42 7a 77 65 69 75 6e 64 76 69 65 72 7a 69 67 00₁₆ (16 байт) |
капель | Удалить элементы Unit из кодека HList | константа (шестнадцатеричный "ca fe") :: cstring).dropUnits | Строка :: HNil | 16 | ∞ | "dreiundzwanzig" :: HNil ⇔ ca fe 64 72 65 69 75 6e 64 7a 77 61 6e 7a 69 67 00₁₆ (17 байт) |
: ~>: | Объединить два кодека, отбросив значение единицы левого | константа (шестнадцатеричное "ab cd ef"): ~>: uint16 :: uint8 | Int :: Int :: HNil | 48 | 48 | 0x1234 :: 0x23 :: HNil ⇔ ab cd ef 12 34 23₁₆ (6 байт) |
: + | Добавить в левый кодек HList правый кодек. | uint8.hlist: + uint16 | Int :: Int :: HNil | 24 | 24 | 0x42 :: 0xcdef :: HNil ⇔ 42 cd ef₁₆ (3 байта) |
::: | Concat два кодека HList | (uint8 :: cstring) ::: (константа (0x23) :: uint16) | Int :: String :: Unit :: Int :: HNil | 32 | ∞ | 0x42 :: "zweiundvierzig" :: () :: 0xabcd :: HNil ⇔ 42 7a 77 65 69 75 6e 64 76 69 65 72 7a 69 67 00 23 ab cd₁₆ (19 байт) |
плоский ZipHList | Concat to HList результат первого кодека с результатом определения кодека после на основе значения первой части | uint8 flatZipHList {case strSize ⇒ limitedSizeBytes (strSize, utf8)} | Инт :: Строка :: HNil | 8 | ∞ | 8 :: "сосиски" :: HNil ⇔ 08 73 61 75 73 61 67 65 73₁₆ (9 байт) |
плоский | ||||||
>>: ~ | Concat to HList результат первого кодека с результатом HList Codec, определенным после на основе значения первой части | uint8 >>: ~ {case strSize ⇒ limitedSizeBytes (strSize, utf8) :: uint16} | Int :: String :: Int :: HNil | 8 | ∞ | 8 :: "сосиски" :: 0x1234 :: HNil ⇔ 08 73 61 75 73 61 67 65 73 12 34₁₆ (11 байт) |
плоский Приложение | Concat результат первого кодека HList с результатом кодека, определенным после на основе значения первой части | uint8 :: uint16 flatAppend {case strSize :: _ :: HNil ⇒ limitedSizeBytes (strSize, utf8)} | Int :: Int :: String :: HNil | 24 | ∞ | 8 :: 0xabcd :: "сосиски" :: HNil ⇔ 08 ab cd 73 61 75 73 61 67 65 73₁₆ (11 байт) |
плоский Concat | Concat результат первого кодека HList с результатом кодека HList, определенным после на основе значения первой части | uint8 :: uint16 flatConcat {case strSize :: _ :: HNil ⇒ limitedSizeBytes (strSize, utf8) :: uint16} | Int :: Int :: String :: Int :: HNil | 24 | ∞ | 8 :: 0xabcd :: "сосиски" :: 0x1234 :: HNil ⇔ 08 ab cd 73 61 75 73 61 67 65 73 12 34₁₆ (13 байт) |
Временной ряд с битовыми полями | Redis Labs
Временной ряд с битовыми полями
Если вы храните чисто нормализованные числовые данные, Redis может очень эффективно хранить данные временных рядов в битовом поле.Чтобы сохранить данные, мы сначала должны определить произвольное время эпохи, разрешение и числовой формат. Давайте возьмем наш пример сбора данных о температуре. Предположим, мы хотим измерять температуру раз в минуту и устанавливаем эпоху на полночь одного дня. Предположим, мы измеряем температуру окружающей среды в помещении в градусах Цельсия.
При этом мы можем структурировать наши данные следующим образом:
- Минута 0 дня = байт 0
- Температура записывается в виде 8-битного целого числа без знака (от 0 до 255).
Это даст данные за день примерно за 1.44 КБ
Мы можем записать температуру с помощью команды BITFIELD:
> BITFIELD bit-ts SET u8 # 0 22 1) (целое число) 0
В этом случае мы записали температуру в ключевых битах t в 8-битном формате без знака (u8) в полночь (# 0) и с температурой 22. Фактически, битовые поля не ограничены 8-битными значениями без знака. вы можете манипулировать одним битом до 63 бит без знака или 64 бит со знаком. Обратите внимание на хэш перед смещением (# 0), это означает, что вы хотите выровнять его с указанным типом данных.Например, если вы укажете # 79, это будет означать 79 байтов, а отсутствие хеша будет означать 79-й бит .
Смещение может быть выровнено по типу сохраняемого числа, начиная с 0. Например, если мы хотим записать 1 AM с учетом отсчетов отсчета от нуля, мы должны использовать смещение # 59 или полдень для смещения # 719. .
> BITFIELD bit-ts SET u8 # 59 23 SET u8 # 719 25 1) (целое число) 0 2) (целое число) 0
Это показывает, что BITFIELD является вариативным, вы можете добавлять несколько значений одновременно.
Давайте добавим еще несколько значений к нашему временному ряду:
> BITFIELD bit-ts SET u8 # 60 21 SET u8 # 61 20 1) (целое число) 0 2) (целое число) 0
Теперь позвольте получить эти значения:
> BITFIELD bit-ts GET u8 # 59 GET u8 # 60 GET u8 # 61 1) (целое число) 23 2) (целое число) 21 3) (целое число) 20Подкоманда GET
BITFIELD форматируется так же, как SET, за исключением того, что она не принимает значение в качестве третьего аргумента.
Это нормально, если мы знаем все индексы, которые нам нужно получить, но иногда нам нужен диапазон значений, и было бы слишком много указывать каждый байт по отдельности.Мы можем использовать команду GETRANGE. Обычно это используется для извлечения байтов из строки, но BITFIELD - это просто другой способ обращения к одним и тем же базовым данным.
> GETRANGE бит-ц 59 61 "x17x15x14"
Это вернуло байты с 59 по 61 в шестнадцатеричной форме (23, 21 и 20 в десятичной). Языковые клиенты лучше справляются с обработкой двоичных данных, чем redis-cli, и обычно могут извлекать идиоматический массив байтов вашего языка.
В нашем примере мы манипулировали байтами 0, 59-61 и 719.Что произойдет, если мы запросим байт, который еще не установили? Посмотрим:
> BITFIELD бит-TS GET u8 # 40 1) (целое число) 0 > BITFIELD bit-ts GET u8 # 750 1) (целое число) 0 > GETRANGE бит-TS 30 50 «x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00»
Мы видим, что Redis обрабатывает неназначенные байты как шестнадцатеричные 00 / десятичные 0. Это может быть сложно при работе с данными временных рядов - логика вашего приложения должна делать некоторую разницу между значением 0 и неустановленным.Это может включать в себя своего рода искусственный пол и пропускать значения, установленные как 0, особенно при использовании целых чисел со знаком, поскольку это может быть допустимое значение в середине вашего диапазона.
Фактическая сохраненная длина временного ряда фактически зависит от последнего набора байтов. Итак, в нашем примере последним сохраненным байтом был байт №719 (отсчитываемый от нуля), поэтому длина данных составляет 720 байт. Мы можем подтвердить это с помощью STRLEN:
> СТРЛЕН бит-ц (целое число) 720
Временные ряды на основе BITFIELD представляют собой мощный и компактный шаблон для хранения числовых или двоичных данных.Однако это решение не подходит для всех сценариев использования, и его следует тщательно оценить, если оно соответствует вашим конкретным потребностям.
WaveFile Gem - формат волнового файла
Формат файла Wave
Формат файла Wave со временем изменился и определен в нескольких документах:
В этой статье предпринята попытка собрать самую важную информацию в одном месте. Мы надеемся, что это избавит от необходимости делать перекрестные ссылки на несколько документов, отсеять постороннюю информацию о других форматах файлов и т. Д.
Начало работы
Если вы новичок в программировании звука, возможно, вам захочется сначала ознакомиться с некоторыми основами цифрового звука. Ознакомьтесь с этим сообщением в блоге для введения.
Файлы Wave для хранения аудиоданных
ФайлыWave представляют собой контейнерный формат, который позволяет хранить многие типы аудиоданных. Самый распространенный формат - это целое число PCM . Это необработанные несжатые данные выборки, где каждая выборка является целым числом. ( PCM обозначает импульсную кодовую модуляцию ).Точно так же данные PCM могут быть определены с использованием значения с плавающей запятой для каждой выборки, хотя технически это считается другим форматом.
Есть много других официально определенных аудиоформатов. Однако большинство из них редки или устарели.
В настоящее время гем WaveFile поддерживает следующие форматы примеров:
- Целочисленный PCM с 8, 16, 24 или 32 битами на выборку (код формата
1
) - PCM с плавающей запятой, 32 или 64 бита на выборку (код формата
3
) - Форматы, указанные выше, внутри контейнера WAVE_FORMAT_EXTENSIBLE (код формата
65534
)
Волновые файлы - это файлы RIFF
Еще в конце 80-х Electronic Arts разработала общий формат файла-контейнера, который можно было использовать для хранения различных типов данных - аудио, графики и т. Д.Он назывался IFF , от Interchange File Format . Затем Microsoft взяла этот формат, изменила порядок байтов с прямого порядка байтов на прямой порядок байтов, чтобы лучше соответствовать процессорам Intel, и назвала его RIFF (формат файла обмена ресурсами ). Затем формат RIFF был использован для формата файлов * .wav
.
Все многобайтовые числа в файле RIFF хранятся с прямым порядком байтов. (Некоторые нечисловые данные хранятся в виде последовательности байтов, в которой порядок байтов не имеет значения как таковой).
Файлы RIFF содержат «фрагменты»
Как и файл IFF, файл RIFF разбивается на «порции» данных. Каждый блок начинается с 8-байтового заголовка, содержащего 4-байтовый код идентификатора, и поля размером 4 байта. Далее следует тело чанка.
Идентификационный код, называемый FourCC, представляет собой последовательность из 4 байтов. Когда каждый байт интерпретируется как 8-битный символ ASCII, они обычно образуют удобочитаемую строку. Например, 0x52
0x49
0x46
0x46
(т.е.е. «RIFF»
) или 0x64
0x61
0x74
0x61
(т. Е. «данные»
). Поскольку это необработанная последовательность байтов, символы чувствительны к регистру.
Поле размера указывает размер тела блока в байтах как 32-битовое целое число без знака. Размер не должен включать 8-байтовый заголовок. То есть, если блок состоит из 8-байтового заголовка, за которым следуют 1000 байтов данных, в поле размера должно быть указано 1000
, а не 1008
.
Важно! Если тело фрагмента имеет нечетное количество байтов, за ним должен следовать байт заполнения со значением 0
. Другими словами, фрагмент всегда должен занимать четное количество байтов в файле. Байт заполнения должен быть равен , а не в поле размера заголовка блока. Например, если размер тела блока составляет 17 байтов, поле размера заголовка должно быть установлено на 17
, даже если тело блока занимает 18 байтов (17 байтов данных, за которыми следует байт заполнения).
Волновая файловая структура высокого уровня
На верхнем уровне волновой файл состоит из одного фрагмента RIFF ( "RIFF"
), который содержит все данные для волнового файла. Тело блока RIFF начинается с кода формата «WAVE»
, который указывает, что файл является файлом Wave (поскольку файл RIFF также может содержать другие типы данных). За ним следуют дочерние блоки, вложенные в родительский блок RIFF.
Как минимум, дочерние блоки должны включать в себя блок формата ( "fmt"
) и блок данных ( "данные"
), а блок формата должен располагаться перед блоком данных.Если код формата в блоке формата не 1
(см. Ниже), то также должен быть блок фактов ( «факт»
). Также возможны другие необязательные типы чанков.
Типичный файл может выглядеть так:
Идентификатор блока RIFF ( "RIFF"
)
Размер корпуса блока RIFF
Код формата: "ВОЛНА"
Форматировать идентификатор блока ( "fmt"
)
Форматировать размер тела блока
Чанк Тело
Идентификатор блока данных ( «данные»
)
Размер тела блока данных
Чанк ТелоВажно! За исключением блока формата, идущего перед блоком данных, не требуется, чтобы дочерние блоки располагались в каком-либо определенном порядке.Не следует предполагать, что блок данных является последним блоком. (Хотя на практике часто бывает).
Фрагмент RIFF
Как и все блоки, блок RIFF начинается с идентификационного кода FourCC. В данном случае это «РИФФ»
. Далее идет поле размера, которое представляет собой размер всего файла Wave, за исключением 8-байтового заголовка блока RIFF.
Первые 4 байта после заголовка определяют тип блока RIFF. В случае файла Wave это будет «WAVE»
.Сразу после этого будут дочерние фрагменты.
Фрагмент формата
Блок формата описывает формат, в котором закодированы образцы в блоке данных. Точная структура блока формата зависит от значения поля кода формата. Если код формата - 1
(целочисленный PCM), то блок формата будет содержать только поля над пунктирной линией на диаграмме ниже. Если это не 1
, блок также будет содержать поля после пунктирной линии.
Полезно знать Причина для различных типов расширения заключается в том, что формат Wave является контейнером для многих различных типов форматов сэмплов, а также потому, что формат Wave со временем эволюционировал для поддержки новых форматов. Дополнительные поля, необходимые для одного образца формата, могут не понадобиться для другого образца формата. Это также позволяет добавлять новые поля без необходимости изменять уже существующие файлы Wave.
Хотя некоторые из этих полей имеют широкий диапазон возможных значений, на практике будут использоваться лишь некоторые из них.Чтобы узнать, что означает эта терминология, ознакомьтесь с этим сообщением в блоге.
Код формата - указывает, как хранятся образцы данных для волнового файла. Самый распространенный формат - это целочисленный PCM, который имеет код 1
. Другие форматы включают PCM с плавающей запятой ( 3
), ADPCM ( 2
), A-law ( 6
), μ-law ( 7
) и WaveFormatExtensible ( 65534
).
Количество каналов - Обычно файл имеет 1 канал (моно) или 2 канала (стерео).Файл объемного звука 5.1 будет иметь 6 каналов.
Частота дискретизации - Количество кадров выборки, которые появляются каждую секунду. Типичное значение будет 44 100, что соответствует аудио компакт-диску.
Байт в секунду (также известная как скорость байтов) - Спецификация называет эту скорость байта , что означает количество байтов, необходимое для одной секунды аудиоданных. Это равно количеству байтов на кадр выборки, умноженному на частоту дискретизации. Таким образом, при 4 байтах на кадр выборки и частоте дискретизации 44 100 это должно равняться 176 400.
Байт на кадр выборки (также известное как выравнивание блока) - Спецификация называет выравнивание блока , это количество байтов, необходимое для хранения одного кадра выборки, то есть одной выборки для каждого канала. (Иногда кадр выборки также называют блоком ). Каждая выборка и кадр выборки в целом должны состоять из целого числа байтов (т. Е. Быть кратным 8 битам). Например, размер кадра выборки в 16 бит допустим, а 12 бит - нет.
Чтобы вычислить это значение, сначала округлите биты на выборку до следующего кратного 8 (если необходимо), разделите на 8, а затем умножьте на количество каналов.Например:
Это поле можно использовать для вычисления поля байтов в секунду. Другое возможное использование - поиск в файле. Например, если количество байтов на кадр выборки равно 4, то для перехода вперед на 10 кадров выборки необходимо выполнить поиск вперед на 40 байтов.
Бит на выборку - Для целочисленных данных PCM типичные значения будут 8
, 16
или 32
. Если для формата образца это поле не требуется, его следует установить на 0
.
Размер расширения - Это поле должно присутствовать, только если код формата не 1
. Это указывает размер дополнительных полей в байтах. Он не включает байты в это поле. Если в данном формате образца нет дополнительных полей, то это поле все равно должно присутствовать, но для него установлено значение 0
.
Дополнительные поля - Зависит от кода формата! В следующих разделах описаны дополнительные поля для нескольких аудиоформатов.
Поля дополнительного формата для чисел с плавающей запятой
Если код формата - 3
, то данные выборки сохраняются как PCM с использованием чисел с плавающей запятой.Для этого формата нет дополнительных полей, поэтому поле размера расширения должно быть установлено на 0
.
Поля дополнительного формата для расширяемого формата
Если код формата 65534
, то формат называется «WAVE_FORMAT_EXTENSIBLE». Это происходит от имени структуры данных, присвоенной этому формату в Windows API. Расширяемый формат - это формат контейнера (… в пределах * .wav, который сам по себе является форматом контейнера). Он существует для устранения некоторых двусмысленностей в исходном формате файла Wave без нарушения совместимости с уже существующими файлами.
Если используется формат WAVE_FORMAT_EXTENSIBLE, размер расширения в блоке формата должен быть 22
, и должны быть включены следующие три поля:
Допустимые биты на выборку - Исходная спецификация волнового файла не ясна относительно того, представляют ли биты на поле выборки количество бит в каждой выборке или размер контейнера, в котором находится каждая выборка. Например, если каждая выборка 20 бит внутри 24-битного контейнера, должно ли это поле быть установлено на 20 или 24? В спецификации говорится, что это поле «определяет количество бит данных, используемых для представления каждой выборки каждого канала», что, по-видимому, интерпретировалось в любом случае.
В файле WAVE_FORMAT_EXTENSIBLE эта неоднозначность устранена. В этом типе файла биты на поле выборки всегда должны быть установлены на размер контейнера одной выборки, а допустимые биты на поле выборки в расширении должны быть установлены на количество бит, которые действительно важны. Например, если файл содержит 20-битные выборки в 24-битных контейнерах, то исходные биты на поле выборки должны быть установлены на 24, а допустимые биты на поле выборки в расширении должны быть установлены на 20.
Маска канала - В обычном файле без WAVE_FORMAT_EXTENSIBLE 1-й канал определен для сопоставления с левым динамиком, 2-й канал - с правым динамиком, но отображение оставшихся каналов → динамиков не определено. Поле маски канала позволяет вам определять конкретные сопоставления динамиков для каждого канала (например, для файла объемного звука с 6 каналами). Можно сопоставить 18 определенных динамиков.
18 младших битов этого поля используются как битовое поле, чтобы указать, какой канал сопоставлен с каким динамиком (если есть).Каждому определенному динамику соответствует бит:
Например, если в 4-канальном файле каналы должны быть сопоставлены (по порядку) с передним левым, передним правым, задним левым и задним правым динамиками, поле маски канала должно быть установлено на 00000000 00000000 00000000 00110011
, что эквивалентно 0x00000033
. (Однако помните, что это следует хранить как значение с прямым порядком байтов, а не с прямым порядком байтов, как это может подразумеваться).Каналы будут отображены в порядке, указанном в списке выступающих выше.Например. если в 2-канальном файле в поле маски канала установлены биты для заднего левого и верхнего центрального динамиков, первый канал будет сопоставлен с задним левым, а второй канал - с верхним центральным (потому что задний левый находится раньше, чем верхний центр в списке выше).
Если количество каналов превышает количество битов, установленных в этом поле, оставшиеся каналы будут иметь неопределенное сопоставление динамиков. Если в сопоставлении громкоговорителей установлено больше битов, чем количество каналов, дополнительные биты следует игнорировать.Чтобы явно указать, что ни один канал не назначен какому-либо конкретному динамику, установите в этом поле значение 0
.
В спецификации говорится, что если старший бит этого поля установлен на 1
(например, 0xFFFFFFFF
), это означает, что «объект поддерживает все возможные конфигурации каналов». Честно говоря, я не понимаю, что это значит.
GUID субформата - определяет формат данных выборки в блоке данных. Поскольку код формата уже будет установлен на 65534
, чтобы указать WAVE_FORMAT_EXTENSIBLE, этот GUID вместо этого указывает формат образца.Некоторые сопоставления GUID включают:
Фрагмент фактов
Блок фактов указывает, сколько кадров выборки находится в файле. Если код формата 1
, это необязательно; в противном случае это необходимо.
Обратите внимание, что в этом поле указано общее количество кадров выборки , а не общее количество выборок. Например, если стерео файл содержит 1000 отсчетов для левого канала и 1000 отсчетов для правого канала, значение этого поля должно быть 1000
, а не 2000
.
Причина, по которой существует этот блок, заключается в том, что с некоторыми форматами выборки общее количество кадров выборки не может быть определено без чтения всего блока данных (например, потому что они хранят данные в сжатом формате, который необходимо декодировать). Это дает возможность определить, например, время воспроизведения файла без необходимости этого делать.
Это не требуется для целочисленных данных PCM (код формата 1
), потому что общее количество кадров выборки может быть получено путем деления поля байтов на кадр выборки в блоке формата на общее количество байтов в теле блока данных. .Например, если тело блока данных составляет 352 800 байтов, а количество байтов на кадр выборки равно 4 (например, два 16-битных канала), то общее количество кадров выборки составляет 352 800 & div; 4 = 88 200.
Блок данных
Структура фрагмента данных проще, чем фрагмента формата: обычный 8-байтовый заголовок фрагмента, за которым следуют только необработанные данные выборки. Образцы данных могут быть сохранены в нескольких форматах, которые будут обозначены полем кода формата в блоке формата.
В следующих разделах описывается несколько форматов, в которых могут храниться образцы данных в блоке данных.
Целочисленный блок данных PCM
Код формата: 1
Это наиболее распространенный формат, состоящий из необработанных выборок PCM в виде целых чисел. Число битов на поле выборки будет указывать диапазон выборок:
Важно! Обратите внимание, что 8-битные выборки беззнаковые, в то время как большая битовая глубина подписана.
Сэмплы в многоканальном волновом файле PCM чередуются. То есть в стерео файле за одним семплом для левого канала будет следовать один семпл для правого канала, за которым следует другой семпл для левого канала, затем правого канала и так далее.
Один набор чередующихся отсчетов называется кадром отсчетов (также называемым блоком ). Кадр сэмпла будет содержать по одному сэмплу для каждого канала. В монофоническом файле кадр сэмпла будет состоять из 1 сэмпла. В стерео файле кадр сэмпла содержит 2 сэмпла (один для левого канала, один для правого канала). В 5-канальном файле образец кадра состоит из 5 отсчетов. Поле байтов на кадр выборки в блоке формата дает размер в байтах каждого кадра выборки. Это может быть полезно при поиске определенного кадра образца в файле.
Например, для 2-канального файла с 16-битными выборками PCM данные выборки будут выглядеть следующим образом:
LSB
означает «младший байт», а MSB
означает «старший значащий байт».
Блок данных PCM с плавающей запятой
Код формата: 3
В качестве альтернативы, выборки PCM могут быть сохранены как значения с плавающей запятой. По сути, это то же самое, что и целочисленный формат PCM (т.е. код формата 1
), за исключением того, что выборки находятся в диапазоне -1.От 0 до 1.0. Число битов на поле выборки должно быть установлено на 32
или 64
, чтобы указать точность значений. Образцы кадров должны быть расположены так же, как описано в разделе «Целочисленный блок данных PCM» выше.
Расширяемый блок данных
Код формата: 65534
Поскольку WAVE_FORMAT_EXTENSIBLE является контейнерным форматом, код формата 65534
не подразумевает какой-либо конкретный формат образца. Вместо этого формат образца обозначается идентификатором GUID субформата в расширении блока формата.Например, если GUID субформата является GUID для целочисленного PCM, то образцы будут в том же формате, как если бы код формата был 1
.