Как перевести отрицательное число в двоичную систему
БлогNot. Как расписать целое отрицательное число в двоичном коде?
Как расписать целое отрицательное число в двоичном коде?
Ответ вот на такой загадочный вопрос:
Не понял, что конкретно ты хотел сделать?
Узнать, как двоичное представление отрицательного числа расписать, что ли?
Имеем десятичное число -2013, надо его записать в двоичном коде.
Переводим положительное число 2013 в двоичную систему, получаем 11111011101.
Дописываем слева нули, чтоб вышло 16 разрядов (если число двухбайтовое), имеем 0000011111011101 (прямой код).
Инвертируем все биты (то есть, 0 заменяем на 1, а 1 на 0), имеем 1111100000100010 (обратный код).
Прибавляем в двоичной системе 1 к обратному коду, имеем 1111100000100011. Это значение равно -2013.
Проверить можно стандартным калькулятором Windows:
Запускаешь Калькулятор (Программы — Стандартные — Калькулятор), в XP выбираешь в меню программы Вид — Инженерный, в «семерке», по-моему, Вид — Программист, набираешь выражение, ответом для которого будет нужное отрицательное число, например, 0-2013 = -2013, переключаешь систему счисления на двоичную (Bin), а ёмкость числа — на 2 байта, видишь 1111100000100011.
Или у нас сразу есть отрицательное двоичное число, скажем, 1111111111101111 (самый левый бит — единица, значит, отрицательное). левая «1» обозначает знак «-«, отбрасываем её, а от оставшегося двоичного числа отнимаем 1, получаем 111111111101110, заменяем все нули на 1, а единицы на нули, получаем 000000000010001, а это есть десятичное 17. Значит, код обозначал -17.
Перевод -273.35 из десятичной в двоичную систему счисления
Калькулятор перевода чисел имеет одно поле для ввода. В это поле необходимо ввести число которое Вы хотите перевести.
После этого Вам обязательно нужно указать в какой системе счисления Вы его ввели. Для этого под полем ввода есть графа "Его система счисления".
Если Вы не нашли своей системы, то выберите графу "другая" и появится поле ввода . В это поле необходимо вписать основание системы одним числом без пробелов.
Далее необходимо выбрать в какую систему хотите перевести данное число. Если Вы опять не нашли нужной системы то введите ее в графе "другая".
После нажмите кнопку "ПЕРЕВЕСТИ" и результат появится в соответствующем поле. Если Вы хотите получить подробный ход решения, то нажмите на соответствующую ссылку.
После проведения расчета нажмите на кнопочку ‘Расчет не верен’ если Вы обнаружили ошибку. Или нажмите ‘расчет верный’ если ошибок нет.
Научиться переводить число из одной системы счисления в другую очень просто.
Любое число может быть легко переведено в десятичную систему по следующему алгоритму:
Каждая цифра числа должна быть умножена на основание системы счисления этого числа возведенное в степень равное позиции текущей цифры в числе справа налево, причём счёт начинается с 0.
5.Отрицательные двоичные числа. Дополнительный код числа.
Дополнительный код — наиболее распространённый способ представления отрицательных целых чисел в компьютерах. Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ. Дополнительный код отрицательного числа можно получить инвертированием модуля двоичного числа (первое дополнение) и прибавлением к инверсии единицы (второе дополнение). Либо вычитанием числа из нуля.
При записи числа в дополнительном коде старший разряд является знаковым. Если его значение равно 0, то в остальных разрядах записано положительное двоичное число, совпадающее с прямым кодом. Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.
Двоичное 8-ми разрядное число со знаком в дополнительном коде может представлять любое целое в диапазоне от −128 до +127. Если старший разряд равен нулю, то наибольшее целое число, которое может быть записано в оставшихся 7 разрядах равно 2 7 − 1, что равно 127.
Преобразование числа из прямого кода в дополнительный осуществляется по следующему алгоритму.
Если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается;
Если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. К получившемуся числу дописывается старший (знаковый) разряд, равный 1.
6.Дробные двоичные числа. Мантисса. Нотация с избытком.
Ресурсы компьютеров не бесконечны, и основной трудностью является представление периодических и непериодических дробей. Следовательно, такие дроби следует округлять, задавать класс точности участвующих (и могущих появиться в результате вычислений!) чисел без потери точности вычислений, а также следить за тем, чтобы потеря точности не произошла при переводе чисел из одной системы счисления в другую. Особенно важно аккуратно производить вычисления при операциях с плавающей точкой. Плавающая точка — форма представления действительных чисел, в которой число хранится в форме мантиссы ипоказателя степени.
Число с плавающей запятой состоит из:
Мантиссы (выражающей значение числа без учёта порядка)
Знака мантиссы (указывающего на отрицательность или положительность числа)
Порядка (выражающего степень основания числа, на которое умножается мантисса)
в памяти компьютера вещественное число представляется в форме с плавающей точкой в двоичной системе счисления (q=2) и занимает ячейку размером 4 байта. В ячейке должна содержаться следующая информация о числе: знак числа, порядок и значащие цифры мантиссы
В старшем бите 1-го байта хранится знак числа. В этом разряде 0 обозначает плюс, 1 – минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся значащие цифры мантиссы.
Двоичная нотация с избытком*. Другой способ представления целочисленных значений называется двоичной нотацией с избытком (excess notation). В отличие от двоичного дополнительного кода в этой нотации отрицательные числа представляются комбинациями со знаковым битом, равным 0, а положительные числа – комбинациями со знаковым битом, равным 1. В каждом случае вы обнаружите, что полученный результат превосходит код в представлении с избытком на восемь. Например, последовательность 1100 в двоичной системе является записью числа 12, но в представлении с избытком она является кодом 4; последовательность 0000 в двоичной системе является записью числа 0, а в представлении с избытком – кодом 8. Точно так же 5-битовое представление с избытком будет называться представлением с избытком 16, так как, например, последовательность 10000 будет кодом 0, а не 16, как в двоичной записи. Вы можете убедиться, что 3-битовое представление с
избытком является представлением с избытком четыре (рис. 1.14, а).
7.Логические операции. Основные тождества.
Логическая операция — в программировании операция над выражениями логического (булевского) типа, соответствующая некоторой операции над высказываниями в алгебре логики. Как и высказывания, логические выражения могут принимать одно из двух истинностных значений — «истинно» или «ложно». Логические операции служат для получения сложных логических выражений из более простых. В свою очередь, логические выражения обычно используются как условия для управления последовательностью выполнения программы.
Логическое сложение (дизъюнкция)(или)
Логическое умножение (конъюнкция)(и)
Импликация (функция следования)
3)логическое или, Исключающее или, эквивалентность
1)a=a; 2)a ^0=0; a^ 1=a;3)a v 0=a; a v 1 =1; 4)a ^ not a =0; 5)a v not a=1; 6)not not a=a;
7)not(a v b)= not a ^ not b; not(a ^ b)=not a v not b; 8)a v b =b v a; a ^ b=b ^ a; 9)a v a=a; a ^a =a; 10)a v a ^ b=a;11)a ^(a v b)=a;12)(a ^ b)v(b ^ not b)=a;13)(a v b)^ (a v not b)=a;
Как перевести отрицательное число в двоичную систему
Побитовые операторы и двоичное представление чисел
Язык программирования С++ обладает полным набором побитовых операторов. Побитовые операторы применяются при выполнении операций с битами в двоичном представлении числовых значений. Прежде чем непосредственно рассмотреть сами операторы, кратко остановимся на концепции двоичного представления числовых значений.
Как известно, целые числа представляются в виде последовательности цифр. Такое представление чисел называется позиционным. Весь набор цифр, которые могут использоваться в позиционном представлении числа, определяют систему счисления. В повседневной жизни используется десятичная система счисления, в которой числа представлены цифрами от 0 до 9.
В программировании более популярны системы счисления с количеством цифр, равным степени двойки: восьмеричная и шестнадцатеричная. Однако двоичная система счисления — вне конкуренции. В этой системе счисления числа записываются последовательностью из двух цифр: 0 и 1.
Каждая позиция в двоичном представлении числа соответствует биту. Таким образом, с помощью бита можно записать два значения: 0 или 1. Если для представления числа используется n бит, то в этом случае существует 2 n различных комбинаций, каждая из которых соответствует отдельному числу. Например, с помощью 8 бит(1 байт) можно записать 2 8 = 256 чисел.
При представлении двоичным кодом положительных чисел можно было бы использовать стандартное математическое представление числа в двоичной системе. Однако на практике приходится иметь дело и с отрицательными числами, причем с технической точки зрения знаком «минус» здесь не обойтись — минус можно написать на бумаге, а реализовать его в памяти компьютера намного сложнее.
Для определения знака числа используют старший бит в позиционной записи. Нулевой старший бит соответствует положительному числу, а единичный старший бит соответствует отрицательному числу. При этом перевод для положительных чисел из двоичной системы счисления в десятичную осуществляется стандартными методами: если в двоичном представлении число позиционно задается как bnbn-1. b2b1b0 (причем цифры bi могут принимать значения 0 или 1, а старший бит для положительных чисел равен 0), то в десятичной системе число вычисляется как b02 0 + b12 1 + b22 2 + . + bn-12 n-1 + bn2 n .
С отрицательными числами дела обстоят несколько сложнее. Чтобы перевести отрицательное число с позиционным представлением в двоичной системе bnbn-1. b2b1b0 (старший бит для отрицательного числа bn = 1), необходимо проделать несложную процедуру из двух этапов.
Во-первых, производится побитовое инвертирование кода, т.е. каждый бит в представлении числа меняется на противоположный: 0 на 1 и 1 на 0.
Во-вторых, результат переводится в десятичную систему и к нему добавляется 1. Это модуль отрицательного числа. Чтобы получить само число, модуль числа необходимо умножить на -1.
Чтобы перевести число из десятичной системы в двоичную, проделывают обратную процедуру: от модуля отрицательного числа отнимается 1, результат переводится в бинарный код, после чего проводится побитовое инвертирование.
Проиллюстрируем это не примере.
Рассмотрим 8-битовое бинарное положительное число 01001011, что в десятичной системе счисления соответствует числу 2 0 + 2 1 + 2 3 + 2 6 = 1 + 2 + 8 + 64 = 75.
Определим бинарное машинное представление для отрицательного числа -75. Отнимем от модуля числа единицу, получаем 74. Бинарное представление для этого числа 01001010 (74 = 2 1 + 2 3 + 2 6 ). После побитового инвертирования из числа 01001010 получаем 10110101. Это и есть представление числа -75.
В том, что это так, легко убедиться: сложим числа 01001010 и 10110101. Формально получаем 100000000, однако поскольку числа 8-битовые, лишний единичный старший бит отбрасывается, и получается представление 00000000, что соответствует нулю, как и должно быть.
Теперь рассмотрим основные побитовые операции и операторы, которые используются для этого в языке программирования С++. Список побитовых операторов приведен в таблице 1.6.
a является число, которое получается побитовым инвертированием числа а.
к числу 5 требует особых пояснений. На самом деле в 8-битовом представлении число 5 имеет вид 00000101. В предыдущих случаях нулевые старшие разряды роли не играли, поэтому они явно не указывались. При инвертировании наличие старших нулевых битов важно. Инвертирование дает 11111010. Это не что иное, как представление в двоичном машинном коде числа -6. Последнее читатель может проверить самостоятельно.
Особенности операций в двоичной системе таковы, что сдвиг в побитовом представлении числа на одну позицию влево означает умножение этого числа на 2. Следует только помнить, что с определенного момента при сдвиге вправо теряются старшие биты.
Представим, что число задается 8 битами.
Если воспользоваться командной 1 << 6, получим в качестве результата значение 2 6 =64.
Действительно, десятичное число 1 в двоичной системе в 8-битовом представлении задается как 00000001. после сдвига влево на 6 позиций получаем 01000000, что в десятичной системе соответствует числу 64.
Однако если воспользоваться командой 1 << 7, получим в качестве результата -128.
Объясняется это следующим обстоятельством
После сдвига влево на 7 позиций из числа 00000001, получаем число 10000000.
Это отрицательное число, о чем свидетельствует старший единичный бит.
Переводя это число в десятичную систему, сначала инвертируем бинарный код и получаем 01111111. Это код числа 127. Чтобы получить конечное значение, необходимо прибавить к этому результату 1 и добавить минус — в результате приходим к значению -128.