Каково двоичное представление числа «256»?

Каково двоичное представление числа «256»?

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

255 = 11111111

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

решение1

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

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

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

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

Калькулятор Windows показывает 256 в десятичной и двоичной системе счисления

решение2

Ну, для представления этого вам понадобится 2 байта. 256 = 00000001 00000000

решение3

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

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

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

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

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

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

решение4

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

1 << 8

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

Связанный контент