c # uint неожиданный результат правого сдвига битов - PullRequest
0 голосов
/ 07 декабря 2018

Я запутался, почему это производит 0xffffffff в C #, я ожидал, что это произведет 0x0.Тип выражения: uint.

Console.WriteLine(0xffffffff >> 32);

1 Ответ

0 голосов
/ 07 декабря 2018

Согласно документации :

Если первый операнд - это int или uint (32-разрядная величина), число сдвигов задается младшей пятьюбиты второго операнда (второй операнд & 0x1f).

Второй операнд равен 32. 32 & 0x1f равен 0. Таким образом, >> 32 эквивалентно 'сдвинуть это на 0 битов', следовательно, 'сделатьвообще ничего ».

...