битовые поля в си



Автор Alex задал вопрос в разделе Другие языки и технологии

Си Битовые поля и получил лучший ответ

Ответ от Krab Вark[гуру]
Это может зависеть от компилятора, C отдает это на усмотрение разработчика компилятора, но обычно это так, как в этом примере, поскольку это наиболее логично. Однобитовое знаковое целое может иметь только два значения: -1 и 0 - так по общему правилу кодирования целых чисел в компьютере, они представляются в дополнительном коде. А в дополнительном коде первый (и у нас единственный) бит для неотрицательного числа всегда равен нулю, для отрицательного - единице. Для однобитового дополнительного кода все возможные значения - это -1 и 0. Числа 1, 2, 3 и так далее в однобитовое целое уже не помещаются.

Ответ от Захар Иванов[гуру]
Потому, что первый (нулевой) бит за знак числа отвечает.

Ответ от Modern Иванов[гуру]
Если поле равно 1биту, то всегда нужно указывать тип unsigned,так как один бит не может иметь знака. Его значение или 0,или 1.Но компилятор в любом случае первый бит если он 1 и не указан unsigned считает -1.

Ответ от Aleks Al09[эксперт]
чушь напороли какую то

unsigned хранит ТОЛЬКО положительные числа (тем самым увеличивая размер их)
а int хранит любые целые числа (2 байта вроде)

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Си Битовые поля
Битовое поле на Википедии
Посмотрите статью на википедии про Битовое поле
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*