8 разрядное двоичное число. Двоичное кодирование чисел: прямой, обратный и дополнительный коды

Как представляются целые числа в памяти компьютера. Что такое прямой код числа. Как получить обратный код двоичного числа. Для чего нужен дополнительный код и как его вычислить. Преимущества использования дополнительного кода в вычислительной технике.

Содержание

Представление чисел в памяти компьютера

В памяти компьютера все числа представляются в двоичной системе счисления. Для кодирования целых чисел используется несколько способов:

  • Прямой код
  • Обратный код
  • Дополнительный код

Каждый из этих способов имеет свои особенности и применяется для решения определенных задач. Рассмотрим подробнее каждый из них.

Что такое прямой код числа

Прямой код — это самый простой способ представления целых чисел в двоичной системе. Он имеет следующий формат:

  • Старший бит отводится под знак числа (0 — для положительных, 1 — для отрицательных)
  • Остальные биты содержат абсолютное значение числа в двоичной системе

Например, число 5 в 8-битном прямом коде будет выглядеть так:


00000101

А число -5 в прямом коде:

10000101

Прямой код удобен тем, что положительные числа представляются в нем так же, как и в обычной двоичной системе. Однако при выполнении арифметических операций с отрицательными числами возникают сложности.

Особенности обратного кода

Обратный код позволяет упростить вычитание чисел, сведя его к операции сложения. Для положительных чисел обратный код совпадает с прямым. Для отрицательных чисел он формируется по следующим правилам:

  • Старший бит устанавливается в 1 (признак отрицательного числа)
  • Все остальные биты инвертируются (0 заменяется на 1 и наоборот)

Например, число -5 в 8-битном обратном коде будет выглядеть так:

11111010

Обратный код упрощает некоторые вычисления, но имеет недостаток — два представления нуля (положительный и отрицательный). Это усложняет проверку на равенство нулю.

Преимущества дополнительного кода

Дополнительный код является наиболее распространенным способом представления целых чисел в современных компьютерах. Он обладает следующими преимуществами:


  • Позволяет заменить вычитание на сложение
  • Имеет единственное представление нуля
  • Упрощает реализацию арифметических операций

Для положительных чисел дополнительный код совпадает с прямым. Для отрицательных чисел он формируется в два этапа:

  1. Вычисляется обратный код числа
  2. К результату прибавляется 1

Рассмотрим пример получения дополнительного кода для числа -5:

Прямой код:     10000101
Обратный код:   11111010
Добавляем 1:    11111011

Таким образом, число -5 в 8-битном дополнительном коде будет представлено как 11111011.

Диапазон представления чисел

При использовании дополнительного кода для n-разрядных чисел диапазон представления будет следующим:

  • От -2^(n-1) до 2^(n-1) — 1

Например, для 8-битных чисел диапазон составит от -128 до 127.

Какой максимальный диапазон чисел можно представить в 16-битном дополнительном коде? Для 16-разрядных чисел диапазон будет от -32768 до 32767.

Выполнение арифметических операций

Одним из главных преимуществ дополнительного кода является простота выполнения арифметических операций. Рассмотрим несколько примеров:


Сложение чисел

При сложении чисел в дополнительном коде необходимо просто сложить их двоичные представления, отбросив перенос из старшего разряда. Например, сложим числа 5 и -3:

  00000101 (5)
+ 11111101 (-3)
  --------
  00000010 (2)

Как видим, результат верный — получилось число 2.

Вычитание чисел

Вычитание сводится к сложению с отрицательным числом. Например, вычтем из 5 число 3:

  00000101 (5)
+ 11111101 (-3)
  --------
  00000010 (2)

Результат снова верный — 5 — 3 = 2.

Применение дополнительного кода в технике

Дополнительный код широко используется в современных компьютерах и микропроцессорах для представления целых чисел. Это обусловлено следующими факторами:

  • Упрощение арифметических схем процессора
  • Экономия оборудования за счет универсальности операций
  • Повышение скорости вычислений

Практически все современные процессоры работают с целыми числами в дополнительном коде. Это позволяет оптимизировать их архитектуру и повысить производительность.

Ограничения дополнительного кода

Несмотря на множество преимуществ, дополнительный код имеет некоторые ограничения:


  • Асимметричный диапазон представления чисел
  • Сложность понимания для начинающих программистов
  • Необходимость дополнительных проверок при изменении знака числа

Кроме того, в некоторых специфических форматах (например, с плавающей запятой) преимущества дополнительного кода не так очевидны.

Заключение

Дополнительный код является эффективным способом представления целых чисел в компьютерах. Он позволяет упростить выполнение арифметических операций и оптимизировать архитектуру процессоров. Несмотря на некоторые ограничения, дополнительный код остается стандартом де-факто в современной вычислительной технике.

Понимание принципов работы с дополнительным кодом важно для программистов, работающих на низком уровне, а также для всех, кто интересуется устройством компьютеров и микропроцессоров. Это знание позволяет лучше понимать принципы работы вычислительной техники и создавать более эффективные программы.


Системы счисления по основанию 2, 8, 10, 16. Представление целых неотрицательных и отрицательных чисел в ЭВМ. Прямой, обратный и дополнительный коды. Примеры прямого, обратного и дополнительного кодов восьмибитового положительного и отрицательного целого числа. Запишите в десятичной с.с. целое число по его дополнительному коду.

Вопрос 8 (Системы счисления по основанию 2, 8, 10, 16. Представление целых неотрицательных и отрицательных чисел в ЭВМ. Прямой, обратный и дополнительный коды. Примеры прямого, обратного и дополнительного кодов восьмибитового положительного и отрицательного целого числа. Запишите в десятичной с.с. целое число по его дополнительному коду.) Система счисления — это способ записи чисел с помощью заданного набора специальных знаков (цифр). Существуют системы позиционные и непозиционные. Основание позиционной системы счисления — это количество различных знаков или символов, используемых для изображения цифр в данной системе. Десятичная система счисления Эта система пришла в Европу из Индии, где она появилась не позднее VI века н. э. В этой системе 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, но информацию несет не только цифра, но и место, на котором цифра стоит (то есть ее позиция). В десятичной системесчисления особую роль играют число 10 и его степени; 10, 100, 1000 и т. д. Крайняя правая цифра числа показывает число единиц, вторая справа — число десятков, следующая — число сотен и т. д. Причина наибольшей распространенностидесятичной системы счисления состоит в том, что первым счетным аппаратом человека являлись его руки. Число пальцев и стало отправным пунктом для системы счета.
Двоичная система счисления
В этой системе всего две цифры — 0 и 1. Особую роль здесь играет число 2 и его степени: 2, 4, 8 и т. д. Крайняя правая цифра числа показывает число единиц, следующая цифра — число двоек, следующая — число четверок и т. д. Двоичная система счисления позволяет закодировать любое натуральное число — представить его в виде последовательности нулей и единиц. В двоичном виде можно представлять не только числа, но и любую другую информацию: тексты, картинки, фильмы и аудиозаписи. Инженеров двоичное кодирование привлекает тем, что легко реализуется технически. Восьмеричная система счисления В этой системе счисления 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7. Цифра 1, указанная в самом младшем разряде, означает — как и в десятичном числе — просто единицу. Та же цифра 1 в следующем разряде означает 8, в следующем 64 и т. д. Число 100 (восьмеричное) есть не что иное, как 64 (десятичное). Чтобы перевести в двоичную систему, например, число 611 (восьмеричное), надо заменить каждую цифру эквивалентной ей двоичной триадой (тройкой цифр). Легко догадаться, что для перевода многозначного двоичного числа в восьмеричную систему нужно разбить его на триады справа налево и заменить каждую триаду соответствующей восьмеричной цифрой.
Шестнадцатеричная система счисления
Запись числа в восьмеричной системе счисления достаточно компактна, но еще компактнее она получается в шестнадцатеричной системе. В качестве первых 10 из 16 шестнадцатеричных цифр взяты привычные цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, а вот в качестве остальных 6 цифр используют первые буквы латинского алфавита: А, В, С, D, Е, F. Цифра 1, записанная в самом младшем разряде, означает просто единицу. Та же цифра 1 в следующем разряде — 16 (десятичное), в следующем — 256 (десятичное) и т. д. Цифра F, указанная в самом младшем разряде, означает 15 (десятичное). Перевод из шестнадцатеричной системы в двоичную и обратно производится аналогично тому, как это делается для восьмеричной системы.
Представление целых чисел
Для представления чисел в ЭВМ обычно используют битовые наборы — последовательности нулей и единиц фиксированной длины. Организовать обработку наборов фиксированной длины технически легче, чем наборов переменной длины. Позиция в битовом наборе называется разрядом. В ЭВМ разрядом называют также часть регистра (или ячейки памяти), хранящую один бит. Положительные целые числа ( и число 0 )

Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — цифровая часть содержит двоичную запись числа, в знаковом разряде содержится 0. Например, для k = 8:



преобразования числа декабря до 6-разрядное двоичное число



Я ищу, чтобы преобразовать dec-число в 6-битное двоичное число.. bin() работает нормально, но пропускает ведущие нули, которые важны.

например:

  • 0 = 000000
  • 1 = 000001
  • 2 = 000010

и т. д. … с самым большим разрешенным числом dec-63.

python binary bin
Поделиться Источник Richard     07 октября 2011 в 13:26

2 ответа




8

Либо то, что сказал Мэтт в комментарии ( bin(63)[2:].zfill(6)), либо используйте строки формата в Python 2.6+:

'{0:06b}'.format(63)

Вы можете опустить первый ноль в Python 2.7+, так как вы можете неявно нумеровать группы.

Поделиться agf     07 октября 2011 в 13:30



0

Или просто:

n2=[2**x for x in xrange(0, 7)]
n2.reverse()

def getx(x):
    ret = ''
    for z in n2:
        if x >= z:
            x -= z
            ret += '1'
        else:
            ret += '0'

    return ret

Поделиться Balazs Kanyo     07 октября 2011 в 14:01


Похожие вопросы:


Преобразование десятичного числа в двоичное число на Fortran

Я хочу написать программу, которая преобразует десятичное число в двоичное и дает размер этого двоичного числа. У меня есть следующий код: program bin implicit none integer i, count, bin(100), dec…


Пользовательская функция для преобразования целого числа decimal в двоичное (до 20 цифр) в MATLAB

Мне нужно написать пользовательскую функцию MATLAB, которая преобразует целые числа, записанные в двоичной форме, в форму decimal. Назовите функцию d = binaTOint (b), где входной аргумент b-вектор с…


Как конвертировать числа (декабря) в двоичном (номер ОГРН) и от ящика до декабря?

Как конвертировать числа (декабря) в двоичном (номер ОГРН) и из bin в через C# декабря и Winforms?


Как преобразовать десятичное число в двоичное число с фиксированными битами

Я хочу преобразовать числа от 0 до 15 Вот так: 0000 0001 0010 0011 . . . 1111 Проблема в том, что когда мы преобразуем 2 в двоичное число, оно дает только 10 в двоичном виде, но я хочу преобразовать…


Десятичное число в двоичное для большого числа (>2253483438943167)

У меня есть приложение VB.Net, которое проходит через ряд процессов для декодирования строки, одна из проблем заключается в том, что я нашел функцию, которая преобразует двоичное число в десятичное…


Является ли приведение целого числа со знаком к двоичному числу с плавающей запятой дешевле, чем обратная операция?

Я знаю из таких статей, как Почему вы никогда не должны бросать поплавки в ints и многих других, подобных этому, что бросать поплавок в подписанный int дорого. Я также знаю, что некоторые…


Разница между 8-разрядное число в мало-endian и 8-разрядное число в обратном порядке байтов

В чем разница между 8-разрядное число в мало-endian и 8-разрядное число в обратном порядке байтов на Intel 64?


Доказать или опровергнуть: асимптотически быстрее возвести в квадрат n-разрядное целое число, чем умножить два n-разрядных целых числа

Доказать или опровергнуть: асимптотически быстрее возвести в квадрат n-разрядное целое число, чем умножить два n-разрядных целых числа.


Как получить отрицательное двоичное число из положительного числа

Учитывая положительное число, я пытаюсь напечатать строку, которая представляет его отрицательное двоичное число. Я делаю что-то вроде этого: def NegativeBinary(number): number_below = number — 1…


преобразование числа decimal в двоичное число

Я написал код, который преобразует целое число decimal в двоичное. Я пытаюсь заставить его печатать все числа до тех пор, пока не будет задано число, а не печатать каждый раз одно и то же число….

Представление положительных и отрицательных чисел в памяти компьютера. Прямой и дополнительный код числа

Прямой код

Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1.

Таким образом, в двоичной системе счисления, используя прямой код, в восьмиразрядной ячейке (байте) можно записать семиразрядное число. Например:

0 0001101 – положительное число
1 0001101 – отрицательное число

Количество значений, которые можно поместить в семиразрядной ячейке со знаком в дополнительном разряде равно 256. Это совпадает с количеством значений, которые можно поместить в восьмиразрядную ячейку без указания знака. Однако диапазон значений уже другой, ему принадлежат значения от -128 до 127 включительно (при переводе в десятичную систему счисления).

При этом в вычислительной технике прямой код используется почти исключительно для представления положительных чисел.

Для отрицательных чисел используется так называемый дополнительный код. Это связано с удобством выполнения операций над числами электронными устройствами компьютера.

Дополнительный код

В дополнительном коде, также как и прямом, первый разряд отводится для представления знака числа. Прямой код используется для представления положительных чисел, а дополнительный – для представления отрицательных. Поэтому, если в первом разряде находится 1, то мы имеем дело с дополнительным кодом и с отрицательным числом.

Все остальные разряды числа в дополнительном коде сначала инвертируются, т.е. заменяются противоположными (0 на 1, а 1 на 0). Например, если 1 0001100 – это прямой код числа, то при формировании его дополнительного кода, сначала надо заменить нули на единицы, а единицы на нули, кроме первого разряда. Получаем 1 1110011. Но это еще не окончательный вид дополнительного кода числа.

Далее следует прибавить единицу к получившемуся инверсией числу:

1 1110011 + 1 = 1 1110100

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

Причина, по которой используется дополнительный код числа для представления отрицательных чисел, связана с тем, что так проще выполнять математические операции. Например, у нас два числа, представленных в прямом коде. Одно число положительное, другое – отрицательное и эти числа нужно сложить. Однако просто сложить их нельзя. Сначала компьютер должен определить, что это за числа. Выяснив, что одно число отрицательное, ему следует заменить операцию сложения операцией вычитания. Потом, машина должна определить, какое число больше по модулю, чтобы выяснить знак результата и определиться с тем, что из чего вычитать. В итоге, получается сложный алгоритм. Куда проще складывать числа, если отрицательные преобразованы в дополнительный код. Это можно увидеть на примерах ниже.

Операция сложения положительного числа и отрицательного числа, представленного в прямом коде

  1. Прямой код числа 5: 0 000 0101
    Прямой код числа -7: 1 000 0111
  2. Два исходных числа сравниваются. В разряд знака результата записывается знак большего исходного числа.
  3. Если числа имеют разные знаки, то вместо операции сложения используется операция вычитания из большего по модулю значения меньшего. При этом первый (знаковый) разряд в операции не участвует.
        _ 000 0111
          000 0101
        -------------
          000 0010
        
  4. После выполнения операции учитывается первый разряд. Результат операции 1 000 0010, или -210.

Операция сложения положительного числа и отрицательного числа, представленного в дополнительном коде

  1. Прямой код числа 5: 0 000 0101
    Прямой код числа -7: 1 000 0111
  2. Формирование дополнительного кода числа -7.
    Прямой код : 1 000 0111
    Инверсия : 1 111 1000
    Добавление единицы: 1 111 1001
  3. Операция сложения.
          0 000 0101
        + 1 111 1001
          --------------
          1 111 1110
        
  4. Проверка результата путем преобразования к прямому коду.
    Дополнительный код: 1 111 1110
    Вычитание единицы : 1 111 1101
    Инверсия : 1 000 0010 (или -210)

Двоичная система счисления | Digital Music Academy

Если в десятичной системе счисления числа записываются с помощью десяти различных символов (от 0 до 9), то в двоичной системе — с помощью всего двух символов: 0 и 1. Такая система необходима для всех устройств, в которых информация представлена в виде последовательностей двух возможных состояний носителя, а это практически вся современная вычислительная техника.

Так же, как в десятичной системе разряды являются степенями основания 10, в двоичной системе разряды являются степенями основания 2:

10 000 000 0001 000 000 000100 000 00010 000 0001 000 000100 00010 0001000100101
1010109108107106105104103102101100
10245122561286432168421
21029282726252423222120

При этом значением числа будет сумма значений всех разрядов. Например, переведем в привычный десятичный вид двоичное число 110001:

1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49

Или то же самое чуть иначе:

1 * 32 + 1 * 16 + 0 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 49

Или так:

Биты и байты

В современных вычислительных системах информация представлена не в виде непрерывного потока двоичных символов (условных нолей и единиц), а за единицу информации, как правило, принимается байт (byte).
Байт состоит из восьми битов (т.е. это восьмиразрядное двоичное число), соответственно, он имеет 256 (28) возможных значений.

Именно поэтому стандартные варианты разрядности кратны восьми. Например, для операционных систем это 32 или 64 разряда (или бита), а для цифрового звука: 8, 16, 24 и 32.

Важно не запутаться в трех основных значениях, которые определяются разрядностью числа: количество возможных значений, максимальное значение и значение старшего бита/разряда.
Например, для 8-разрядного числа количество возможных значений = 256 (0 — 255), максимальное значение = 255, а значение старшего бита = 128.

 

Дополнительный код двоичного числа — Студопедия

Обратный код

Обратный код — метод вычислительной математики, позволяющий вычесть одно число из другого, используя только операцию сложения над натуральными числами. Ранее метод использовался в механических калькуляторах (арифмометрах). В настоящее время используется в основном в современных компьютерах.

Обратный n-разрядный двоичный код положительного целого числа состоит из одноразрядного кода знака (двоичной цифры 0), за которым следует n − 1-разрядное двоичное представление модуля числа (обратный код положительного числа совпадает с прямым кодом).

Пример. Двоичное представление числа 5 есть 101. Обратный 10-разрядный двоичный код числа +5 записывается как 0000000101.

Обратный n-разрядный двоичный код отрицательного целого числа состоит из одноразрядного кода знака (двоичной цифры 1), за которым следует n − 1-разрядное двоичное число, представляющее собой инвертированное n − 1-разрядное представление модуля числа. Следует отметить, что для изменения знака числа достаточно проинвертировать все его разряды не обращая внимания знаковый ли это разряд или информационные.


Пример. Двоичное представление числа 5 есть 101, его 10-разрядное двоичное представление — 0000000101. Обратный 10-разрядный двоичный код числа −5 есть 1111111010.

Для преобразования отрицательного числа в положительное тоже применяется операция инвертирования. Этим обратные коды удобны в применении.[1] В качестве недостатка следует отметить, что в обратных двоичных кодах имеются два кода числа 0: «положительный нуль» 0000000000 и «отрицательный нуль» 1111111111 (приведены 10-разрядные обратные коды). Это приводит к некоторому усложнению операции суммирования. Поэтому в дальнейшем перешли к дополнительным кодам записи знаковых целых чисел.

n-разрядный обратный код позволяет представить числа от − 2n − 1 + 1 до + 2n − 1 − 1.

Дополнительный код — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение), либо вычитанием числа из нуля.

Дополнительный код (дополнение до 2) двоичного числа получается добавлением 1 к младшему значащему разряду его дополнения до 1.

Дополнение до 2 двоичного числа определяется как величина полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного дополнения до 2).

Представление числа в дополнительном коде


При записи числа в дополнительном коде старший разряд является знаковым. Если его значение равно 0, то в остальных разрядах записано положительное двоичное число, совпадающее с прямым кодом. Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Двоичное 8-ми разрядное число со знаком в дополнительном коде может представлять любое целое в диапазоне от −128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно 27 − 1, что равно 127.

Преобразование дополнительного кода

Преобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.

· Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;

· Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Дополнительный код для десятичных чисел

Тот же принцип можно использовать и в компьютерном представлении десятичных чисел: для каждого разряда цифра X заменяется на 9−X, и к получившемуся числу добавляется 1. Например, при использовании четырёхзначных чисел −0081 заменяется на 9919 (9919+0081=0000, пятый разряд выбрасывается).


Преимущества и недостатки

Преимущества

· Один и тот же регистр может хранить как n-битовое положительное число, так и (n−1)-битовое число со знаком, с общими для обоих форматов операциями сложения, вычитания и левого сдвига.

· Более удобная упаковка чисел в битовые поля.

· Отсутствие числа «минус ноль».

Недостатки

· Дополнительный код неочевиден для новичков.

· В сложных форматах (таких, как плавающая запятая или двоично-десятичный код) большинство преимуществ аннулируются.

Дополнительный код (представление числа) — это… Что такое Дополнительный код (представление числа)?

Дополнительный код (англ. two’s complement, иногда twos-complement) — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение), либо вычитанием числа из нуля.

Дополнительный код (дополнение до 2) двоичного числа получается добавлением 1 к младшему значащему разряду его дополнения до 1. [1]

Дополнение до 2 двоичного числа определяется как величина полученная вычитанием числа из наибольшей степени двух (из 2N для N-битного дополнения до 2).

Представление отрицательного числа в дополнительном коде

При записи числа в дополнительном коде старший разряд является знаковым. Если его значение равно 0, то в остальных разрядах записано положительное двоичное число, совпадающее с прямым кодом. Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Двоичное 8-ми разрядное число со знаком в дополнительном коде может представлять любое целое в диапазоне от −128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно , что равно 127.

Примеры:

Десятичное
представление
Код двоичного представления (8 бит)
прямойобратныйдополнительный
127       01111111       01111111       01111111       
1       00000001       00000001       00000001       
0       00000000       00000000       00000000       
-0       10000000       11111111       —       
-1       10000001       11111110       11111111       
-2       10000010       11111101       11111110       
-3       10000011       11111100       11111101       
-4       10000100       11111011       11111100       
-5       10000101       11111010       11111011       
-6       10000110       11111001       11111010       
-7       10000111       11111000       11111001       
-8       10001000       11110111       11111000       
-9       10001001       11110110       11110111       
-10       10001010       11110101       11110110       
-11       10001011       11110100       11110101       
-127       11111111       10000000       10000001       
-128       —       —       10000000       

Дополнительный код для десятичных чисел

Тот же принцип можно использовать и в компьютерном представлении десятичных чисел: для каждого разряда цифра X заменяется на 9−X, и к получившемуся числу добавляется 1. Например, при использовании четырёхзначных чисел −0081 заменяется на 9919 (9919+0081=0000, пятый разряд выбрасывается).

При применении той же идеи к привычной 10-ричной системе счисления получится (например, для гипотетического процессора использующего 10-ричную систему счисления):

10-ричная система счисления
(«обычная» запись)
10-ричная система счисления,
дополнительный код
130013
120012
110011
100010
90009
80008
20002
10001
00000
-19999
-29998
-39997
-49996
-99991
-109990
-119989
-129988

Преобразование в дополнительный код

Преобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.

  1. Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;
  2. Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.

Пример. Преобразуем отрицательное число −5, записанное в прямом коде, в дополнительный. Прямой код числа −5, взятого по модулю:

101 

Инвертируем все разряды числа, получая таким образом обратный код:

010

Добавим к результату 1

011

Допишем слева знаковый единичный разряд

1011

Для обратного преобразования используется тот же алгоритм. А именно:

1011

Инвертируем все разряды числа, получая таким образом обратный код:

0100

Добавим к результату 1 и проверим, сложив с дополнительным кодом

 0101 + 1011 = 10000, пятый разряд выбрасывается.

p-адические числа

В системе p-адических чисел изменение знака числа осуществляется преобразованием числа в его дополнительный код. Например, если используется 5-ричная система счисления, то число, противоположное 1000… (1) равно 4444…. (−1).

Реализация алгоритма преобразования в обратный код (для 8-битных чисел)

Pascal

if a<0
  then a:=((not a) or 128) + 1;

C/C++

if (a < 0)
  a = ( (~(-a))|128 ) + 1;

Преимущества и недостатки

Преимущества

  • Один и тот же регистр может хранить как n-битовое положительное число, так и (n−1)-битовое число со знаком, с общими для обоих форматов операциями сложения, вычитания и левого сдвига.
  • Более удобная упаковка чисел в битовые поля.
  • Отсутствие числа «минус ноль».

Недостатки

  • Дополнительный код неочевиден для новичков.
  • В сложных форматах (таких, как плавающая запятая или двоично-десятичный код) большинство преимуществ аннулируются.
  • Модуль наибольшего числа не равен модулю наименьшего числа. Пример: знаковое целое 8-битовое. Максимальное число: 12710 == 7F16 == 011111112. Минимальное число: -12810 == 8016,дополнительный код == 100000002,дополнительный код. Соответственно, не для любого числа существует противоположное. Операция изменения знака может потребовать дополнительной проверки.
  • Сравнение. В отличие от сложения, числа в дополнительном коде нельзя сравнивать, как беззнаковые, или вычитать без расширения разрядности. Один из методов состоит в сравнении как беззнаковые исходных чисел с инвертированным знаковым битом.

Пример программного преобразования

Если происходит чтение данных из файла или области памяти, где они хранятся в двоичном дополнительном коде (например, файл WAVE), может оказаться необходимым преобразовать байты. Если данные хранятся в 8 битах, необходимо, чтобы значения 128-255 были отрицательными. b2) — c; //Результат остаётся 121, потому что знаковый разряд — нуль.

См. также

Литература

  • Behrooz Parhami 2.3. Complement Representation, 2.4. Two’s- and 1’s-complement numbers // Computer Arithmetic: Algorithms and Hardware Designs. — New York: Oxford University Press, 2000. — P. 22-27. — 510 p. — ISBN 0-19-512583-5
  • Самофалов К.Г., Романкевич А.М., Валуйский В.Н., Каневский Ю.С., Пиневич М.М. Прикладная теория цифровых автоматов. — К.: Вища школа, 1987. — 375 с.

Ссылки

  1. К.Г.Жуков «Справочное руководство пользователя Fixed-Point Blockset» 1.2. Понятие прямого, обратного и дополнительного кодов, Определение 3. Архивировано из первоисточника 23 июня 2012.

Преобразование чисел в различные системы счисления

Система чисел является систематическим способом представления чисел символьными символами и использует базовое значение для удобной группировки чисел в сжатой форме. Самая распространенная система числов — десятичная, которая имеет базовое значение 10, и набор символов 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Однако существуют и другие числовые системы, которые могут быть более эффективными для определенной цели. Например, так как на компьютерах используется логическое значение для вычислений и операций, для выполнения вычислений и операций используется двоичная числовая система, которая имеет базовое значение 2.

Microsoft Office Excel есть несколько функций, которые можно использовать для преобразования чисел в числовые системы и из них:

Система номеров

Базовое значение

Набор символьных знаков

Двоичный

2

0,1

Восьмеричном

8

0, 1, 2, 3, 4, 5, 6, 7

Действительное.

10

0, 1, 2, 3, 4, 5, 6, 7, 8 и 9

Шестнадцатеричный

16

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Преобразование двоичного числа в десятичное

Для этого используйте функцию ДВ.В.Е.

A

B

Формула

Описание (результат)

=ДВ.В.ДЕС(1100100)

Преобразует двоичное 1100100 в десятичное (100).

=ДВ.В.ДЕС(1111111111)

Преобразует двоичное 11111111111 в десятичное (-1)

Преобразование двоичного числа в hexadecimal

Для этого используйте функцию ДВ.В.EX.

A

B

Формула

Описание (результат)

=ДВ.В.ШЕСТН(11111011; 4)

Преобразует двоичное 11111011 в hexadecimal с 4 знаками (00FB)

=ДВ.В.ШЕСТН(1110)

Преобразует двоичное 1110 в hexadecimal (E)

=ДВ.В.ШЕСТН(1111111111)

Преобразует двоичное 1111111111 в hexadecimal (FFFFFFFFFF)

Преобразование двоичного числа в восьмую

Для этого используйте функцию ДВ.В.ВЕХ.

A

B

Формула

Описание (результат)

=ДВ.В.ВОСЬМ(1001; 3)

Преобразует двоичное число 1001 в восьмую с 3 знаками (011).

=ДВ.В.ВОСЬМ(1100100)

Преобразует двоичное число 1100100 в восьмую (144).

=ДВ.В.ВОСЬМ(1111111111)

Преобразует двоичное число 1111111111 в восьмую (77777777777)

Преобразует десятичное число в двоичное.

Для этого используйте функцию DEC2BIN.

A

B

Формула

Описание (результат)

=ДЕС.В.ДВ(9;4)

Преобразует десятичное 9 в двоичное с 4 знаками (1001).

=ДЕС.В.ДВ(-100)

Преобразует десятичное -100 в двоичное (1110011100)

Преобразование десятичных числовом восьмерикое

Для этого используйте функцию DEC2HEX.

A

B

Формула

Описание (результат)

=ДЕС.В.ШЕСТН(100;4)

Преобразует десятичность 100 в шестн. с 4 знаками (0064).

=ДЕС.В.ШЕСТН(-54)

Преобразует десятичной -54 в hexadecimal (FFFFFFFFCA)

Преобразование десятичных числовых в восьмеричных

Для этого используйте функцию DEC2OCT.

A

B

Формула

Описание (результат)

=ДЕС.В.ВОСЬМ(58;3)

Преобразует десятичной число 58 в восьмеричность (072).

=ДЕС.В.ВОСЬМ(-100)

Преобразует десятичной в восьмеричной (7777777634)

Преобразование hexadecimal number в двоичное

Для этого используйте функцию HEX2BIN.

A

B

Формула

Описание (результат)

=ШЕСТН.В.ДВ(«F»; 8)

Преобразует букву F в двоичное с 8 знаками (00001111).

=ШЕСТН.В.ДВ(«B7»)

Преобразует hexadecimal B7 в двоичное (10110111)

=ШЕСТН.В.ДВ(«FFFFFFFFFF»)

Преобразует hexadecimal FFFFFFFFFF в двоичное (11111111111)

Преобразование hexadecimal number в десятичной

Для этого используйте функцию HEX2DEC.

A

B

Формула

Описание (результат)

=ШЕСТН.В.ДЕС(«A5»)

Преобразует шестнамерный A5 в десятичной (165).

=ШЕСТН.В.ДЕС(«FFFFFFFF5B»)

Преобразует шестнадцелярное FFFFFFFF5B в десятичной (-165).

=ШЕСТН.В.ДЕС(«3DA408B9»)

Преобразует шестнадцелярное 3DA408B9 в десятичной (1034160313).

Преобразование hexadecimal number в восьмую

Для этого используйте функцию HEX2OCT.

A

B

Формула

Описание (результат)

=ШЕСТН.В.ВОСЬМ(«F»; 3)

Преобразует восьмую букву F в восьмую с 3 знаками (017).

=ШЕСТН.В.ВОСЬМ(«3B4E»)

Преобразует шестнадцелярное число 3B4E в восьмую (35516).

=ШЕСТН.В.ВОСЬМ(«FFFFFFFF00»)

Преобразует hexadecimal FFFFFFFF00 в восьмую (777777400)

Преобразование восьмого числа в двоичное

Для этого используйте функцию ВОСЬМ.В.ДВ.

A

B

Формула

Описание (результат)

=ВОСЬМ.В.ДВ(3; 3)

Преобразует восьмую 3 в двоичную с 3 знаками (011).

=ВОСЬМ.В.ДВ(7777777000)

Преобразует восьмую 7777777000 в двоичную (10000000000)

Преобразование восьмериального числа в десятичной

Для этого используйте функцию ВОСЬМ.В.Е.

A

B

Формула

Описание (результат)

=ВОСЬМ.В.ДЕС(54)

Преобразует восьмеричность 54 в десятичной (44).

=ВОСЬМ.В.ДЕС(7777777533)

Преобразует восьмеричность 7777777533 в десятичной (-165).

Преобразование восьмого числа в hexadecimal

Для этого используйте функцию ВОСЬМ.В.EX.

A

B

Формула

Описание (результат)

=ВОСЬМ.В.ШЕСТН(100; 4)

Преобразует восьмую число 100 в hexadecimal с 4 знаками (0040).

=ВОСЬМ.В.ШЕСТН(7777777533)

Преобразует восьмую число 7777777533 в hexadecimal (FFFFFFFF5B)

двоичный код | 8-битные числа

Переключить навигацию Бинарный код
  • Дом
  • 8 бит
  • 16 бит
Двоичный Десятичное
00000001 1
00000010 2
00000011 3
00000100 4
00000101 5
00000110 6
00000111 7
00001000 8
00001001 9
00001010 10
00001011 11
00001100 12
00001101 13
00001110 14
00001111 15
00010000 16
00010001 17
00010010 18
00010011 19
00010100 20
00010101 21
00010110 22
00010111 23
00011000 24
00011001 25
00011010 26
00011011 27
00011100 28
00011101 29
00011110 30
00011111 31
00100000 32
00100001 33
00100010 34
00100011 35
00100100 36
00100101 37
00100110 38
00100111 39
00101000 40
00101001 41
00101010 42
00101011 43
00101100 44
00101101 45
00101110 46
00101111 47
00110000 48
00110001 49
00110010 50
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
1 бит 2-битный 3-битный 4-битный 5-битный 6-битный 7-битный 8-битный 9-битный 10-битный 11-битный 12-битный 13-битный 14-битный 15-битный 16 бит 17-битный 18-битный 19 бит 20-битный 21-битный 22-битный 23-битный 24-битный 25 бит

Система Base-2 и 8-битный байт

Причина, по которой компьютеры используют систему base-2, заключается в том, что она значительно упрощает их реализацию с помощью современных электронных технологий.Вы можете подключить и построить компьютеры, которые работают по системе base-10, но сейчас они будут чертовски дорогими. С другой стороны, компьютеры base-2 относительно дешевы.

Итак, компьютеры используют двоичные числа и, следовательно, используют двоичных цифр вместо десятичных цифр. Слово бит является сокращением слов «Двоичная цифраIT». В то время как десятичные цифры имеют 10 возможных значений в диапазоне от 0 до 9, биты имеют только два возможных значения: 0 и 1. Следовательно, двоичное число состоит только из 0 и 1, например: 1011.0) = 8 + 0 + 2 + 1 = 11

Вы можете видеть, что в двоичных числах каждый бит содержит значение возрастающей степени 2. Это значительно упрощает подсчет в двоичном формате. Начиная с нуля и до 20, счет в десятичном и двоичном формате выглядит следующим образом:

 0 = 0
 1 = 1
 2 = 10
 3 = 11
 4 = 100
 5 = 101
 6 = 110
 7 = 111
 8 = 1000
 9 = 1001
10 = 1010
11 = 1011
12 = 1100
13 = 1101
14 = 1110
15 = 1111
16 = 10000
17 = 10001
18 = 10010
19 = 10011
20 = 10100 

Если посмотреть на эту последовательность, 0 и 1 одинаковы для десятичной и двоичной систем счисления.Под цифрой 2 вы видите, что перенос происходит первым в двоичной системе. Если бит равен 1, и вы добавляете к нему 1, бит становится 0, а следующий бит становится 1. При переходе от 15 к 16 этот эффект проходит через 4 бита, превращая 1111 в 10000.

Биты редко встречаются. один в компьютерах. Они почти всегда объединяются в 8-битные коллекции, и эти коллекции называются байтами . Почему в байте 8 бит? Аналогичный вопрос: «Почему в дюжине 12 яиц?» 8-битный байт — это то, к чему люди пришли путем проб и ошибок в течение последних 50 лет.

С 8 битами в байте вы можете представить 256 значений в диапазоне от 0 до 255, как показано здесь:

 0 = 00000000
  1 = 00000001
  2 = 00000010
   ...
254 = 11111110
255 = 11111111 

В статье Как работают компакт-диски вы узнаете, что на компакт-диске используется 2 байта или 16 бит на выборку. Это дает каждому образцу диапазон от 0 до 65 535, например:

 0 = 0000000000000000
    1 = 0000000000000001
    2 = 0000000000000010
     ...
65534 = 1111111111111110
65535 = 1111111111111111 

Далее мы рассмотрим один из способов использования байтов.

Двоичное слово — обзор

III Коды постоянного веса

A код постоянного веса (CW) с параметрами n , d , w представляет собой набор C двоичных слов длиной n , все имеют вес w , так что расстояние между любыми двумя кодовыми словами составляет по меньшей мере d . Все нетривиальные ( n , d , w ) коды CW имеют d ≤ 2 w . Пусть A ( n , d , w ) будет наибольшим количеством кодовых слов в любом коде CW с этими параметрами.Тогда классическая проблема состоит в том, чтобы определить это число или найти наилучшие верхние и нижние границы для A ( n , d , w ).

Двоичные коды CW нашли применение в задачах синхронизации, в таких областях, как системы связи с множественным доступом с оптическим разделением каналов (CDMA), связь с расширенным спектром со скачкообразной перестройкой частоты, модельное радио, проектирование сигналов радаров и гидролокаторов, а также построение последовательностей протоколов. для многопользовательского канала коллизий без обратной связи.Коды с постоянным весом по сравнению с другими алфавитами привлекли некоторое внимание, но пока что было немного приложений. Мы будем обсуждать только двоичные коды CW.

Коды с постоянным весом были тщательно изучены, и хорошей ссылкой является MacWilliams and Sloane (1977). Эрик Рейнс и Нил Слоан ведут таблицу наиболее известных нижних границ для A ( n , d , w ) на веб-сайте: http://www.research.att.com/njas/ коды / Andw /. Мы представим обзор этой темы с акцентом на связи с дизайном.

Поскольку сумма любых двух двоичных слов с одинаковым весом всегда имеет четный вес, мы имеем A ( n , 2δ — 1, w ) = A ( n , 2δ, w ). С этого момента мы будем считать, что расстояние d четное. У нас также есть A ( n , d , w ) = A ( n , d , n w ), так как если два слова находятся на расстоянии d отдельно, так же их дополнения.Это означает, что нужно рассматривать только случай w n /2.

Связь между кодами CW и дизайном очевидна. С точки зрения наборов, код CW — это просто набор из w подмножеств из набора n , где пересечение любых двух подмножеств w содержит не более t = w − d2 элементов. Эквивалентно, CW-код — это частичная система Штейнера Sw − d2 + 1, w, n. Тогда мы имеем

A (n, d, w) ≤n (n − 1)… (n − w + d / 2) w (w − 1)… (d / 2)

с равенством тогда и только тогда, когда система Штейнера S (w − d2 + 1, w, n) существует.

Интерес к кодам CW также связан с проблемой поиска линейных (или нелинейных) кодов ( n , M , d ) максимального размера M . Очевидно, что A ( n , d , w ) — это верхняя граница количества слов с заданным весом в таком максимальном коде. И наоборот, такие коды (или их смежные классы) могут давать нижние границы для A ( n , d , w ). В частности, более сильная версия границы Хэмминга (приведенная в разделе о совершенных кодах) была первоначально доказана с использованием A ( n , 2 t + 2,2 t + 1).

A ( n , 2 t + 2,2 t + 1) — это просто количество блоков в максимальном частичном S ( t + 1,2 t + 1 , n ) конструкция или упаковка. Если C — это код с исправлением ошибок t , то для любого c C количество блоков в соседней упаковке ∣ NS ( c ) ∣ ≤ A ( n , 2 т + 2,2 т + 1).Количество слов, которые находятся на расстоянии t + 1 от c , но не на расстоянии t от любого другого кодового слова, равно

(nt + 1) — (2t + 1t + 1) | NS (c) | ≥ ( nt + 1) — (2t + 1t + 1) A (2t + 2,2t + 1).

Каждое такое слово находится на расстоянии t + 1 от не более ⌊ n / t + 1⌋ других кодовых слов. Таким образом, суммируя по всем c C , каждое такое слово считается не более этого числа раз. Это дает более сильную версию границы Хэмминга:

| C | ((∑i = 0t (ni)) + (nt + 1) — (2t + 1t + 1) A (n, 2t + 2,2t + 1 ) ⌊N / (t + 1) ⌋) ≤2n.

Коды с постоянным весом не могут быть линейными, поскольку это означало бы, что нулевой вектор был в коде, но можно иметь код, в котором все ненулевые слова имеют одинаковый вес. Эти коды иногда называют линейными эквидистантными кодами . Двойник кода Хэмминга (также называемый симплексным кодом ) является примером такого кода. Фактически было доказано, что единственные такие коды формируются путем взятия нескольких копий симплексного кода. Доказательства того, что все такие коды являются обобщенными симплексными кодами, явно вытекают из теории кодирования (Bonisoli, 1983), а также неявно из результатов по планам и системам множеств (Teirlinck, 1980).Существует тесная связь между линейными эквидистантными кодами и конечной геометрией. Слова симплексного кода соответствуют гиперплоскостям проективного пространства [более GF (2)] так же, как слова веса 3 в коде Хэмминга соответствуют строкам в этом проективном пространстве. [Информацию о связях между кодами и конечной геометрией см. В Black and Mullin (1976).]

Другой вариант кодов CW — это оптические ортогональные коды (OOC), которые были применены в оптических системах связи CDMA.Вкратце, ( n , w , t a , t b ) OOC является кодом CW, C , длиной n и массой w такой, что для любого c = ( c 0 , c 1 ,…, c n −1 ) ∈ C , и каждый y C , c y и каждый i ≢ 0 (mod n ),

(1) ∑j = 0n − 1cjcj + i≤ta,

и

(2) ∑j = 0n −1cjyj + i≤tc.

Уравнение (1) является свойством автокорреляции, а уравнение. (2) — свойство взаимной корреляции. Большинство исследований сосредоточено на случае, когда t a = t c = t , и в этом случае мы ссылаемся на ( n , w , t ) OOC. Опять же, можно изменить эти свойства в терминах (частичных) конструкций или упаковок. В этом случае OOC представляет собой набор из w подмножеств целых чисел (mod n ), так что для подмножеств c , b C ,

(3) c + i∩c + j≤tai ≠ j,

и

(4) c + i∩b + j≤tc.

Здесь c + i = { x + i (mod n ) ∣ x c }.

Код OOC эквивалентен циклическому расчету или упаковке. Код или упаковка называется циклической, если каждый циклический сдвиг кодового слова (или блока) является другим кодовым словом. Набор всех циклических сдвигов кодового слова называется орбитой . Представителя с этой орбиты часто называют базовым блоком. OOC ( n , w , t ) OOC представляет собой набор базовых блоков для циклической (частичной) конструкции или упаковки S ( t + 1, w , n ) (при условии т < ш ).И наоборот, при такой циклической частичной конструкции или упаковке S ( t + 1, w , n ) можно сформировать ( n , w , t ) OOC, взяв один репрезентативный блок или кодовое слово с каждой орбиты.

Десятичный преобразователь в двоичный

Из Двоичный, Десятичный, Шестнадцатеричный,

К Двоичный, Десятичный, Шестнадцатеричный,

= Конвертировать × Сброс Поменять местами Двоичное дополнение до 2 со знаком

Группировка цифр

Шаги вычисления от десятичного к двоичному

Разделите на 2 по основанию 2, чтобы получить цифры из остатка:

Деление
на 2
Частное

Остаток

(цифры)
Бит #

Преобразование двоичного числа в десятичное ►

Как преобразовать десятичное число в двоичное

Шагов преобразования:
  1. Разделите число на 2.
  2. Получить целое частное для следующей итерации.
  3. Получите остаток от двоичной цифры.
  4. Повторяйте эти шаги, пока частное не станет равным 0.
Пример # 1

Преобразование 13 10 в двоичное:

Деление
на 2
Частное остаток Бит #
13/2 6 1 0
6/2 3 0 1
3/2 1 1 2
1/2 0 1 3

Итак 13 10 = 1101 2

Пример # 2

Преобразовать 174 10 в двоичное:

Деление
на 2
Частное остаток Бит #
174/2 87 0 0
87/2 43 1 1
43/2 21 1 2
21/2 10 1 3
10/2 5 0 4
5/2 2 1 5
2/2 1 0 6
1/2 0 1 7

Итак 174 10 = 10101110 2

Таблица преобразования десятичных чисел в двоичные

Десятичное число
Число
Двоичный
Число
Hex
Число
0 0 0
1 1 1
2 10 2
3 11 3
4 100 4
5 101 5
6 110 6
7 111 7
8 1000 8
9 1001 9
10 1010 А
11 1011 B
12 1100 С
13 1101 D
14 1110 E
15 1111 F
16 10000 10
17 10001 11
18 10010 12
19 10011 13
20 10100 14
21 10101 15
22 10110 16
23 10111 17
24 11000 18
25 11001 19
26 11010 1A
27 11011
28 11100
29 11101 1D
30 11110 1E
31 11111 1 этаж
32 100000 20
64 1000000 40
128 10000000 80
256 100000000 100


См. Также

Напишите, как улучшить эту страницу

ПРЕОБРАЗОВАНИЕ НОМЕРА
БЫСТРЫЕ СТОЛЫ
Этот веб-сайт использует файлы cookie для улучшения вашего опыта, анализа трафика и отображения рекламы.Учить больше

8-битное двоичное число | Поиск контактной информации

Результаты листинга 8-битное двоичное число

Введение в SMS PDU и текстовый формат

1 час назад Gsmfavorites.com Просмотреть все