0

ビット数を拡張する代わりに、左に移動するときに2進数をカットする方法は?

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

はい、これは簡単です: すべて 1 のマスクを作成し (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 に答える