[JAVA 문법 종합반 2일차-비트연산자&연산자 우선순위]

김동규·2023년 5월 23일
0

연산자의 우선순위

산술 > 비교 > 논리 > 대입 순

int x = 2;
int y = 9;
int z = 10;

boolean result = x < y && y < z;
System.out.println(result); // True

()와 같은 식이 없으므로 산술 연산자 x < y 그리고 y < z를 먼저 비교한다. 이때 둘다 모두 True이므로 True && True 는 True가 된다.

result = x + 10 < y && y < z;
System.out.println(result); // false

위와 마찬가지로 12 < 9 그리고 9 < 10 으로 산술연산자를 먼저 비교한다. False && True 이므로 False값이 된다.

만일 연산 전에 두 피연산자의 타입이 다른 경우 타입을 일치시킨다.

이때 둘중에 저장공간의 크기가 더 큰 타입으로 일치

ex) 피연산자의 타입이 int(4) 와 short(2) 타입이면 4바이트인 int로 변환

비트연산

byte를 8등분한게 1bit
컴퓨터의 가장 작은 단위이기 때문에 bit연산이 연산 중에서 가장 빠름

public static void main(String[] args) {
System.out.println(3 << 2); // 12출력  
System.out.println(3 << 1); // 6 출력

<< 은 쉬프트 연산으로 3을 2진법으로 0011 인데 2칸을 쉬프트 하면 1100이 되고 3 에서 12로 바뀌었다.

마찬가지로 << (쉬프트 연산)으로 0011을 1칸 쉬프트 하면 0110으로 되어서 3에서 6으로 바뀌었다 볼 수 있다.

비트연산은 CT공부하면서 배웠던 내용이라 이해하기 쉬워서 추가적인 공부 없이 잘 넘어갈 수 있어서 다행인 것 같다. 이왕 배운 김에 전에 배웠던 것을 아래에 정리 해보려 한다.

진법 계산

140을 2진법으로 표현하면
10001100 (2^7 + 2^3 + 2^2)

이를 8진법으로 표현하면 8은 2^3 이므로 3개씩 묶어서 보면 된다.
10/001/100
2 1 4
따라서 8진법으로 하면 214로 표현된다.

140을 9로 곱한 것을 2진수로 나타내면?
140의 2진법은 10001100이다.

여기서 왼쪽 쉬프트 한번 연산은 x2를 의미한다. 9는 2^3 + 1을 의미하므로 "140의 2진법을 3번 왼쪽 쉬프트 한 값" + "140의 2진법"을 해서
10001100000 + 10001100 을 계산하면 된다.

140 x 9를
140 x 8 + 140을 했다고 생각하면 된다.

CT공부할 때 비트연산 이해가 안되어서 3번씩 돌려봤는데 까먹지 않게 복습된 것 같아 다행이다.

profile
안녕하세요~

0개의 댓글