Я читаю C++ Primer, и меня слегка смутили несколько комментариев, в которых говорится о том, как побитовые операторы работают со знаковыми типами. Процитирую:
Цитата №1
(Если говорить о побитовых операциях) «Если операнд подписан и
его значение отрицательно, то способ обработки «знакового бита» в
ряде побитовых операций зависит от машины Более того,
сдвиг влево, изменяющий значение знакового бита,
не определен"
Цитата №2
(Когда речь идет об операторе сдвига вправо) «Если этот операнд
без знака, затем оператор вставляет 0-значные биты слева; если это
знаковый тип, результат определяется реализацией — либо копии
знакового бита, либо 0-значные биты вставляются слева. "
Побитовые операторы преобразуют небольшие целые числа (например, char) в целые со знаком. Нет ли проблемы с этим преобразованием в подписанные целые числа, когда побитовые операторы часто дают неопределенное или определяемое реализацией поведение для типов подписанных операторов? Почему стандарт не преобразует char в unsigned int?
Изменить: Вот вопрос, который я удалил, но вернул его для контекста с некоторыми ответами ниже.
Позже в упражнении будет задан вопрос
"Каково значение ~'q'
Подробнее здесь: https://stackoverflow.com/questions/281 ... gned-types
Побитовые операторы и знаковые типы ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Являются ли побитовые операторы медленнее, чем обычные циклы, такие как цикл for?
Anonymous » » в форуме C++ - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-