Можем ли мы интерпретировать отрицательный двоичный файл как положительный (прочитайте вопрос, пожалуйста)? - PullRequest
1 голос
/ 01 ноября 2019

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

НО ПРОБЛЕМА, КОТОРАЯ ЗАМЕТИЛА МЕНЯ ЗАДАТЬ ВОПРОС О STACKOVERFLOW, ЭТО: как насчет того времени, когда мы могли бы захотеть представить огромное число, которое, по его представлению, имело 1 в msb.

позвольте мне объяснить это следующим образом: рассматривая вышеупомянутое правило для создания отрицательных аналогов наших двоичных чисел, мы можем сказать, что ; в 8-битной системе, которую мы имеем, например,положительное значение 12 (десятичное) будет записано как 00001100 в двоичном виде, но отрицательное 12 (десятичное) будет записано как
10001100 , но меня немного смущает то, что 10001100 также можно интерпретировать как 268 вдесятичный, в то время как мы знаем, что это отрицательная форма 12 в двоичном, используя этот метод преобразования.

Я просто хочу знать, как справиться с этим хитрым, двуличным возможным способом интерпретации двоичного числа, как в примере, который я привел выше (кажется, что он отрицательный, О! но подождите, это тоже может быть не так:).

1 Ответ

1 голос
/ 01 ноября 2019

Это зависит от типа, который вы используете. Если вы используете 8-битное представление со знаком, то самое большое число, которое вы можете сохранить, это 1111111 (т. Е. Первый бит установлен в стороне).

В нашем примере это преобразовало бы в целочисленное значениеиз 127.

Если вы используете тип без знака, то у вас есть дополнительный бит, позволяющий хранить 11111111 или 255, выраженное как целое число.

Язык со строгой типизацией и хорошимкомпилятор должен поймать вас на попытке присвоить, скажем, 134 8-битному целому числу ошибок со знаком и ошибкам во всем вас.

Если вы делаете что-то странное, возитесь с битами самостоятельно, вы сами! post hoc невозможно восстановить независимо от того, был ли он отрицательным или большим положительным, поэтому вам придется выбрать систему и придерживаться ее.

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

...