Как представляется unsigned int / long - PullRequest
1 голос
/ 04 марта 2010

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

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

Если кто-то знает, пожалуйста, ответьте.

Ответы [ 5 ]

2 голосов
/ 04 марта 2010

Страница Википедии на Представление со знаком показывает наиболее распространенные реализации в памяти целых значений со знаком и без знака.

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

2 голосов
/ 04 марта 2010

MSB не определяет, подписан ли номер; в знаковых числах он представляет, является ли число отрицательным. В цифрах без знака это просто MSB. Это программа, которая определяет, считается ли число подписанным или неподписанным.

2 голосов
/ 04 марта 2010

Существует много возможных представлений чисел со знаком, наиболее распространенным является дополнение к двум.

1 голос
/ 04 марта 2010

хе хе.вопрос на засыпку.целые числа со знаком и без знака представлены абсолютно одинаково.глядя на память, вы никогда не сможете их различить.это происходит из одного принципа фон Неймана.Так в чем же разница?Разница в том, как они интерпретируются.Если переменная подписана, компилятор использует команды для подписанных строк.Также, если мы знаем, что число подписано, это первый бит говорит нам, что это знак.преобразование выполняется как ~i + 1 (синтаксис c) обоими способами

0 голосов
/ 04 марта 2010

Существует множество возможных представлений, каждое из которых зависит от организации вашего компьютера . Самые известные из них

В обоих представлениях вы можете проверить первый (самый значимый) бит, чтобы выяснить, является ли число положительным (обычно выключенным) или отрицательным (бит включен). То есть, если вы трактуете число как со знаком . Если вы скажете компилятору обрабатывать такие числа как беззнаковые, в качестве данных используется бит знака (который удваивает максимальный диапазон для типа данных).

...