У меня есть 32-разрядное число, где я хочу установить последние 16 бит в ноль. В Python:bit-wise и vs смещение влево/вправо
#a is in base 10
In [143]: a
Out[143]: 536899058
Обычно, я сделал бы побитовое И между номером и битовой маской.
# 11111111 11111111 00000000 00000000 is 4294901760 in base 10
In [145]: a & 4294901760
Out[145]: 536870912L
В данном конкретном случае, есть ли какие-либо недостатки в переключение числа к правой 16 бит, а затем сдвига его обратно к влево на 16 позиций?
In [146]: (a >> 16) << 16
Out[146]: 536870912
Я думаю, что 'a & 0xFFFF0000' более ясно – user3159253
В обратном порядке. Во-первых, вы смещаетесь вправо, а затем уходите. У вас есть отрицательные числа? – Carsten
Ops, извините. Нет, никаких отрицательных чисел. –