int a;

a = 12 << 3;
System.out.println(a);

/*

<< 는 shift 연산이다. 

0000 1100 이면 0110 0000 으로 바꾸라는 의미.

값은 96이다.

*/

a = 12 >> 3;
System.out.println(a);

/*

0000 1100 을 0000 0001로 바꾸라는 의미.

값은 1이다.

*/

a = -32 >> 3;
System.out.println(a);

/*

0010 0000 를 2의 보수로 저장

1110 0000 임. 이것을 1111 1100으로 바꿈. 이것은 -4이다. 

*/
a = -32 >>>3;
System.out.println(a); 

/*

>>> 연산은 이것만 존재( <<<는 없다)

이것은 빈공간에 0을 채운다. 

예를 들어

1110 0000 이었던 것을 0001 1100이 되는 것임. 

그래서 값은 저렇게 나온다고 함.

*/

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0705_Ex14_Operator  (0) 2021.07.06
0705_Ex13_Bit  (0) 2021.07.06
0705_Ex11_Bit  (0) 2021.07.06
0705_Ex10_Bit  (0) 2021.07.06
0705_Ex09_Logical  (0) 2021.07.05

+ Recent posts