Автор Alex задал вопрос в разделе Другие языки и технологии
Си Битовые поля и получил лучший ответ
Ответ от Krab Вark[гуру]
Это может зависеть от компилятора, C отдает это на усмотрение разработчика компилятора, но обычно это так, как в этом примере, поскольку это наиболее логично. Однобитовое знаковое целое может иметь только два значения: -1 и 0 - так по общему правилу кодирования целых чисел в компьютере, они представляются в дополнительном коде. А в дополнительном коде первый (и у нас единственный) бит для неотрицательного числа всегда равен нулю, для отрицательного - единице. Для однобитового дополнительного кода все возможные значения - это -1 и 0. Числа 1, 2, 3 и так далее в однобитовое целое уже не помещаются.
Ответ от Захар Иванов[гуру]
Потому, что первый (нулевой) бит за знак числа отвечает.
Потому, что первый (нулевой) бит за знак числа отвечает.
Ответ от Modern Иванов[гуру]
Если поле равно 1биту, то всегда нужно указывать тип unsigned,так как один бит не может иметь знака. Его значение или 0,или 1.Но компилятор в любом случае первый бит если он 1 и не указан unsigned считает -1.
Если поле равно 1биту, то всегда нужно указывать тип unsigned,так как один бит не может иметь знака. Его значение или 0,или 1.Но компилятор в любом случае первый бит если он 1 и не указан unsigned считает -1.
Ответ от Aleks Al09[эксперт]
чушь напороли какую то
unsigned хранит ТОЛЬКО положительные числа (тем самым увеличивая размер их)
а int хранит любые целые числа (2 байта вроде)
чушь напороли какую то
unsigned хранит ТОЛЬКО положительные числа (тем самым увеличивая размер их)
а int хранит любые целые числа (2 байта вроде)
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: Си Битовые поля
спросили в Stdio h
Битовые операции
1) Мне один раз пришлось работать с & и | для перевода цветного изображения в черно-белое. Правда
подробнее...
Битовые операции
1) Мне один раз пришлось работать с & и | для перевода цветного изображения в черно-белое. Правда
подробнее...