-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
비트 연산자 질문입니다.
22.10.25 23:42 작성 조회수 192
1
int num1 = 2;
int num2 = 10;
System.out.println(num1 & num2); //2
System.out.println(num1 | num2); //10
System.out.println(num1 ^ num2); //8
System.out.println(~num1); //3
이렇게 4가지 답이 나오는게 이해가 안갑니다 ㅠㅠ
답변을 작성해보세요.
0
kavindutk
2022.10.30
안녕하세요!
비트 연산자에 대해 정확이 이해하고 싶다면 먼저 숫자 체계 (Number Systen) 를 잘 공부하세요.
2진수 ,8진수, 16진수,Second complement 등을 알고 있으면 너무 유용합니다.
& (AND) 연산자는. 두 비트가 모두 1일 때만 1을 반환합니다.
0 & 0 => 0을 반환
0 & 1 => 0을 반환
1 & 0 => 0을 반환
1 & 1 => 1을 반환
System.out.println(num1 & num2); //2
00000010 <= num1
00001010 <= num2
00000010 <= 답변
| (OR) 연산자는 두 개의 비트 중 하나라도 1이면 1로 반환합니다.
0 | 0 => 0을 반환
0 | 1 => 1을 반환
1 | 0 => 1을 반환
1 | 1 => 1을 반환
System.out.println(num1 | num2); //10
00000010 <= num1
00001010 <= num2
00001010 <= 답변
^ (XOR) 연산자는 두 개의 비트가 서로 다른 경우에 1을 반환합니다
0 ^ 0 => 0을 반환
0 ^ 1 => 1을 반환
1 ^ 0 => 1을 반환
1 ^ 1 => 0을 반환
System.out.println(num1 ^ num2); //8
00000010 <= num1
00001010 <= num2
00001000 <= 답변
~(NOT) 연산자는 0 이면 1로, 1 이면 0로 바꿔줍니다. 이거는 아주 간단하네용 ㅎㅎ
~0 => 1을 반환
~1 => 0을 반환
System.out.println(~num1); // -3
00000010 <= num1
11111101
8 비트로 이렇게 표현 하면 num1 의 값을 반전시킨 것을 볼 수 있습니다.
그리고 MSB (Most Significant Bit)도 1로 반환되었는데. 그래서 이렇게 음수 값을 나옵니다.
답변 1