Побитовые операторы и знаковые типыC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Побитовые операторы и знаковые типы

Сообщение Anonymous »

Я читаю C++ Primer, и меня слегка смутили несколько комментариев, в которых говорится о том, как побитовые операторы работают со знаковыми типами. Процитирую:

Цитата №1


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


Цитата №2


(Когда речь идет об операторе сдвига вправо) «Если этот операнд
без знака, затем оператор вставляет 0-значные биты слева; если это
знаковый тип, результат определяется реализацией — либо копии
знакового бита, либо 0-значные биты вставляются слева. "


Побитовые операторы преобразуют небольшие целые числа (например, char) в целые со знаком. Нет ли проблемы с этим преобразованием в подписанные целые числа, когда побитовые операторы часто дают неопределенное или определяемое реализацией поведение для типов подписанных операторов? Почему стандарт не преобразует char в unsigned int?



Изменить: Вот вопрос, который я удалил, но вернул его для контекста с некоторыми ответами ниже.

Позже в упражнении будет задан вопрос

"Каково значение ~'q'

Подробнее здесь: https://stackoverflow.com/questions/281 ... gned-types
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»