Вы можете преобразовать десятичную в двоичную и двоичную в десятичную. Но как вы можете изобразить число «256»?
255 = 11111111
1 байт не может иметь более 8 двоичных цифр (бит). Как это возможно?
Вы можете преобразовать десятичную в двоичную и двоичную в десятичную. Но как вы можете изобразить число «256»?
255 = 11111111
1 байт не может иметь более 8 двоичных цифр (бит). Как это возможно?
Ответы:
Вы спрашиваете, как представить 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 и поиграть с битами, чтобы увидеть, как они соотносятся с их десятичными представлениями.
Как вы уже знаете, 255d (десятичный) равен 11111111b (двоичный). Если вы хотите добавить 1 к значению, есть две возможности:
Либо у вас есть только 8 бит. В этом случае происходит так называемое переполнение . Таким образом, «внутренне», 1 будет добавлен в результате 100000000b (256d в 9 битах). Но поскольку у вас есть только 8 битов, младшие 8 бит будут «возвращены». Таким образом, вы получите 0d = 0b (специальный флаг переполнения будет установлен на большинстве компьютерных архитектур, как примечание).
Думайте об этом так же, как считать пальцами. Представьте, что ваши пальцы показывают 9d. Теперь вы добавляете еще один палец. В итоге вы получаете 10. Что вы делаете, если хотите добавить еще один?
Другая возможность состоит в том, что у вас доступно более 8 бит. В этом случае вы можете просто добавить еще одну цифру в начало, и результат будет действительно 100000000b = 256d.
Байт - это наименьшее «устройство», которое может адресовать компьютерная система (система памяти). Это означает, что если вы хотите знать только один бит, вам нужно попросить систему памяти выдать вам определенный байт с адреса, а затем вам нужно выяснить значение бита, который вас интересует.
Но так же, как 8 бит составляют байт, существуют и большие типы данных. 2 байта составляют слово (16 бит), два слова (четыре байта, 32 бита) составляют двойное слово. И в настоящее время стандартные 64-битные архитектуры даже имеют 64-битные типы данных (так называемые регистры).
Вы можете представить его с помощью сдвига битой операции (влево или вправо в зависимости от байт в двоичном представлении). Например, этот один вкладыш работает для представления с прямым порядком байтов (сначала старший байт):
1 << 8
Байт без знака может содержать только 256 значений, которые включают диапазон [0 - 255]. Для значения 256 вам нужно будет использовать тип данных, который может содержать большее значение, например, целое число.