Что такое двоичное представление «256»? [закрыто]

15

Вы можете преобразовать десятичную в двоичную и двоичную в десятичную. Но как вы можете изобразить число «256»?

255 = 11111111

1 байт не может иметь более 8 двоичных цифр (бит). Как это возможно?

Пранит Баува
источник
3
Как уже сказал @Serious. Вам нужен еще один бит, потому что компьютеры начинают считать с 0. Это «11» на «языке рук» или «еще один человек» (байт) в реальном мире :)
СОМН
2
Я закрыл это как «Не настоящий вопрос», потому что трудно сказать, что вы на самом деле хотите знать. Вы хотите знать двоичное представление числа? Вы задаетесь вопросом, как возможно, что число даже существует, даже если оно не помещается в байте? Вам интересно, как данные хранятся в битах и ​​байтах? Да, 1 байт не может содержать более 8 бит, потому что это определение байта. Но это не накладывает никаких ограничений на цифры в целом.
Der Hochstapler
Вы не можете представить 256 на 8-битном.
Сверхразум

Ответы:

40

Вы спрашиваете, как представить 256 в двоичном формате, но я предполагаю, что вам интересно, почему люди говорят, что байты могут хранить 256 различных чисел, когда наибольшее число, которое оно хранит - 255. Как сказал Клавдиоп, компьютеры начинают считать с 0, поэтому 0 на самом деле первое число, 1 - второе, 2 - третье ... 255 - 256-е.

Кроме того, 11111111 только 255 для неподписанных байтов. Если у вас есть подписанный байт (значение со знаком может содержать отрицательные значения), 11111111 фактически равен -1. Смотрите http://en.wikipedia.org/wiki/Two's_complement . Как работает дополнение двух, добавление отрицательного числа к положительному числу приводит к 0. Как уже говорили другие люди, если мы добавим бит в 11111111, и ваш тип данных может поддерживать только 8 бит, последний бит будет переполнен и оставит вас с 0. Для байтов со знаком значения варьируются от -128 до 127. 128 отрицательных чисел + 0 + 127 положительных чисел = всего 256 чисел.

Для знаковых значений первый бит является битом «знак». Если этот бит установлен, число является отрицательным. 10000000 отрицательно, 01000000 положительно, 11111111 отрицательно, 01111111 положительно ...

Если вы работаете в Windows (возможно, у Mac тоже есть), вы можете открыть калькулятор, переключить его в режим программирования, выбрать sbyte и поиграть с битами, чтобы увидеть, как они соотносятся с их десятичными представлениями.

Windows Calculator показывает 256 в десятичном и двоичном виде

mowwwalker
источник
12

Ну, вам нужно 2 байта, чтобы представить это. 256 = 00000001 00000000

Майкл С.
источник
11

Как вы уже знаете, 255d (десятичный) равен 11111111b (двоичный). Если вы хотите добавить 1 к значению, есть две возможности:

Либо у вас есть только 8 бит. В этом случае происходит так называемое переполнение . Таким образом, «внутренне», 1 будет добавлен в результате 100000000b (256d в 9 битах). Но поскольку у вас есть только 8 битов, младшие 8 бит будут «возвращены». Таким образом, вы получите 0d = 0b (специальный флаг переполнения будет установлен на большинстве компьютерных архитектур, как примечание).

Думайте об этом так же, как считать пальцами. Представьте, что ваши пальцы показывают 9d. Теперь вы добавляете еще один палец. В итоге вы получаете 10. Что вы делаете, если хотите добавить еще один?

Другая возможность состоит в том, что у вас доступно более 8 бит. В этом случае вы можете просто добавить еще одну цифру в начало, и результат будет действительно 100000000b = 256d.

Байт - это наименьшее «устройство», которое может адресовать компьютерная система (система памяти). Это означает, что если вы хотите знать только один бит, вам нужно попросить систему памяти выдать вам определенный байт с адреса, а затем вам нужно выяснить значение бита, который вас интересует.

Но так же, как 8 бит составляют байт, существуют и большие типы данных. 2 байта составляют слово (16 бит), два слова (четыре байта, 32 бита) составляют двойное слово. И в настоящее время стандартные 64-битные архитектуры даже имеют 64-битные типы данных (так называемые регистры).

Ши
источник
Да, и компьютер воспринимает эти 64 бита не как группу из 8 отдельных байтов, а как единое целое, состоящее из 64 бит. Например, если у вас есть подписанные значения, то только один из этих 64 битов является знаковым битом.
Мистер Листер
5

Это 100000000, и ему нужно более одного байта. На самом деле это нужно 9 бит.

серьезный
источник
0

Вы можете представить его с помощью сдвига битой операции (влево или вправо в зависимости от байт в двоичном представлении). Например, этот один вкладыш работает для представления с прямым порядком байтов (сначала старший байт):

1 << 8

Байт без знака может содержать только 256 значений, которые включают диапазон [0 - 255]. Для значения 256 вам нужно будет использовать тип данных, который может содержать большее значение, например, целое число.

алексей
источник