向左移动时如何减少二进制数而不是扩展位数?
int num = 0b101010;
num = num << 1 // I want num to be now 01010
num = num << 1 // I want num to be now 1010
num = num << 1 // I want num to be now 010
num = num << 1 // I want num to be now 10
有简单的方法吗?
是的,这很容易做到:用所有的(0b111111
在你的情况下)制作一个面具,然后用它来掩盖你的原始号码&
。当您向右移动蒙版时,您将获得以下效果:
Number Mask Result
------ ------ ------
101010 011111 001010
101010 001111 001010
101010 000111 000010
101010 000011 000010
101010 000011 000010
101010 000001 000000
您可以使用:
int num = 0b101010;
num = num >> 4;
现在是0b10
。