Java2009. 1. 4. 21:09
int a = -10;
int b = 2;
int c = a >> b;

# 현재의 컴퓨터는 음수를 2의 보수로 나타냄
-10           ->  00000000  00000000  00000000  00001010
1의 보수   ->  11111111  11111111  11111111  11110101
2의 보수   ->  11111111  11111111  11111111  11110110 (컴퓨터가 나타내는 -10)

# int c = a >> b; //(부호비트를 채움)
c                                  ->  11111111  11111111  11111111  11111101 (-3)
다시 1을 뺀후                ->  11111111  11111111  11111111  11111100
다시 1의 보수로 바꾸면  ->  00000000  00000000  00000000  00000011 (3)

# int c = a >>> b; //(0을 채움)
-10        -> 11111111 11111111 11111111 11110110
쉬프트   -> 00111111 11111111 11111111 11111101 (1073741821)



Posted by 위푸