산술 > 비교 > 논리 > 대입 순
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번씩 돌려봤는데 까먹지 않게 복습된 것 같아 다행이다.