0

向左移动时如何减少二进制数而不是扩展位数?

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

有简单的方法吗?

4

2 回答 2

3

是的,这很容易做到:用所有的(0b111111在你的情况下)制作一个面具,然后用它来掩盖你的原始号码&。当您向右移动蒙版时,您将获得以下效果:

Number Mask   Result
------ ------ ------
101010 011111 001010
101010 001111 001010
101010 000111 000010
101010 000011 000010
101010 000011 000010
101010 000001 000000
于 2013-03-12T20:52:02.790 回答
0

您可以使用:

int num = 0b101010;
num = num >> 4;

现在是0b10

于 2013-03-13T00:31:12.203 回答