Подписанные значения обычно хранятся с использованием дополнения Two.http://en.wikipedia.org/wiki/Two%27s_complement
По существу, это обеспечивает бит со знаком, который определяет, является ли сохраненное число отрицательным или положительным.Например, если вы используете 8-битное целое число, диапазон возможных чисел со знаком составляет от -128 до 127. Это разбивается на серию из 8 битов, например, где самый левый бит представляет значение -128.,Последующие биты удерживают половину значения как бит слева, но вместо этого являются положительными.8-битное число в двоичной форме будет выглядеть так:
0 0 0 0 0 0 0 0
-128 64 32 16 8 4 2 1
Поскольку char
является целочисленным типом, оно будет сохраняться так же, как и обычное int.Значение char
со значением -103 может распасться на что-то вроде этого:
1 0 0 1 1 0 0 1
-128 64 32 16 8 4 2 1
Если вы хотите проверить один бит, вы можете использовать маску.Например, если вы хотите проверить, был ли установлен самый левый бит, вы можете сделать что-то вроде этого:
s_char & (0x80)
Это вернет true, если самый левый бит был установлен в 1 в s_char, независимо отдругие биты.Я надеюсь, что это помогает!