https://fall-in-dream.tistory.com/86
위의 글을 보신 분들 중
의아한?궁금한? 부분이 있으신 분들이 있을거라고 생각합니다.
그것은 바로
1. NOT 연산의 결과
2. >>연산과 >>>의 차이
라고 생각합니다.
이번에는 우선 NOT 연산의 결과를 다시 한 번 살펴 봅시다.
int a = 5(0101) 를
Not 연산 결과로
-6(1010)이 나왔습니다.
'0101'을 NOT(~) 연산했으니 0과 1이 반대가 돼서 '1010'이 나온 것까지는 OK
근데 '1010'은 12가 아닌가?
생각할 수 있습니다.
NOT연산자를 이해하기 위해서는
JAVA는 2의 보수를 사용하는 것을 알아야 합니다.
예로,
int 형의 변수는 32비트로 나타내는데
즉, int a = 5; 라고 하면
우리가 보기에는 '0101'이지만
사실은
'0000 0000 0000 0000 0000 0000 0000 0101'이라는 사실!!!!
그러면 이 것을 NOT(~) 연산한다면?
'0000 0000 0000 0000 0000 0000 0000 1010'이 아니라
'1111 1111 1111 1111 1111 1111 1111 1010'가 되는 겁니다!!!!
이진수 '1111 1111 1111 1111 1111 1111 1111 1010' 는 부호 비트가 1로 시작하므로 음수로 간주됩니다.
이진수에서 2의 보수를 취하면 해당 음수의 양수 표현이 됩니다.
따라서 '1111 1111 1111 1111 1111 1111 1111 1010'의
2의 보수는
'0000 0000 0000 0000 0000 0000 0000 0110'이 되고, 이는 10진수로 -6입니다.
(2의 보수에 대해서는 다음에 한 번 다루어 보도록 하겠습니다.)
그러면 다음에는
>>연산과 >>>연산의 차이에 대해 들고 오겠습니다!!!
'공부 > 기타' 카테고리의 다른 글
MySQL - JOIN 사용법(INNER, LEFT, RIGHT, FULL OUTER) (1) | 2024.02.13 |
---|---|
비트 연산자 사용하기 - 1편 (0) | 2024.01.22 |
Character 메소드 활용 (0) | 2024.01.04 |
Scanner 로 char 형 입력하기 - JAVA (0) | 2022.12.25 |
반복문 없이 2차원(다차원) 배열 출력하기 ( Arrays.deepToString(arr))- JAVA (0) | 2022.12.22 |