![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Почему, 0xFFFFFFFF >> 24 = 0xFFFFFFFF,
аналогично: 0xAAFFFFFF >> 24 = 0xFFFFFFAA - т.е. идет заполнение единицами после сдвига, а 0x11FFFFFF >> 24 = 0x00000011, аналогично: 0x33FFFFFF >> 24 = 0x00000033 - т.е. идет заполнениями нулями после сдвига? В классических языках, как например си и си++ (да и в питоне), идет ведь обычное заполнение нулями после сдвига, а тут какая-то петрушка... ![]()
__________________
скриптограф |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Биты, сдвинутые за правый край, отсекаются. Для сохранения знака исходного выражения биты слева заменяются на 0, если самый значащий бит (крайний левый) выражения expression является 0, и на 1, если самый значащий бит является 1
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
смутило то, что я явно объявлял uint
__________________
скриптограф |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Результат интерпретируется как 32-разрядное число с дополнением до двух, поэтому результатом является целое число в диапазоне от -2147483648 до 2147483647. Соответственно, все что больше 0x7FFFFFFF идет с минусом.
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
спасибо! теперь понятно
__________________
скриптограф |
|
|||||
|
Modus ponens
|
Вдогонку - есть и беззнаковый сдвиг.
__________________
Hell is the possibility of sanity |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|