Я запутался, почему это производит 0xffffffff в C #, я ожидал, что это произведет 0x0.Тип выражения: uint.
0xffffffff
0x0
uint
Console.WriteLine(0xffffffff >> 32);
Согласно документации :
Если первый операнд - это int или uint (32-разрядная величина), число сдвигов задается младшей пятьюбиты второго операнда (второй операнд & 0x1f).
Второй операнд равен 32. 32 & 0x1f равен 0. Таким образом, >> 32 эквивалентно 'сдвинуть это на 0 битов', следовательно, 'сделатьвообще ничего ».
32 & 0x1f
>> 32