비트 연산자 질문입니다.
367
3 asked
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가지 답이 나오는게 이해가 안갑니다 ㅠㅠ
Answer 1
0
안녕하세요!
비트 연산자에 대해 정확이 이해하고 싶다면 먼저 숫자 체계 (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로 반환되었는데. 그래서 이렇게 음수 값을 나옵니다.
이클립스 활성화가 안되는부분이있어요ㅜㅜ
0
429
1
책에 자료실
0
495
1
StudentID
0
553
1
인터페이스와 가상 메서드
0
354
1
11분쯤 price, int price 질문
0
350
1
For문 (중첩된 반복문) 구구단 문의 드립니다.
0
782
1
반복문 별 출력 연습문제
0
390
1
Scheduler scheduler = null 굳이 하는 이유가 있나요
1
333
0
Class간의 연결
1
292
1
선생님 스킬
0
392
1
초기화 에러!!!
0
282
1
선생님 영상에서 목소리가 좀 작은 것 같습니다 ㅠㅠ
2
300
0
출력
2
230
0
Main 함수 저번 강의 거가 나와요
0
312
1
결과값오류
1
222
0
printIn 함수 질문
0
449
1
24분 57초에 질문 있습니다!!
0
359
1
1분36초쯤에 말씀하시는 자바닥??그거 보라고 하셨는데 자바닥이 뭐죠..?
0
246
1
메서드와 생성자
0
393
2
참조형 데이터 타입은 클래스 이름과 같아야 하나요?
0
282
1
반환값은 정수 밖에 안되나요?
0
270
1
9분33초 설명!!부탁 드립니다!
0
296
1
48분쯤에 {"B","C","D""} 를 왜 {'B','C','D'}로 바꿨죠?
0
294
1
for (byte b : bs) 가 뭐죠..
0
501
1

