연산자(Operator)
산술 연산자 + - * / %
비교
논리
ㄱ. 일반 논리 연산자 ! && ||
ㄴ. 비트 논리 연산자 ~ & ^ |
~ 틸드 연산자(비트 부정 연산자) --각각의 비트를 부정하는 연산자
& 비트 논리 AND 연산자 --> 각 비트가 둘다 참(1)일때만 참으로 연산 하겠다.
^ XOR 연산자
(eXclusiveOR 연산자) --> 서로 다를때 참인 연산자
베타적인 == 서로 다르다
| 비트 논리 OR 연산자 --> 각 비트 둘중 하나가 참이면 참으로 연산하겠다.
비트연산자
int i = 10;
System.out.println(~i); // -11이 출력된다. (~10, -11이랑이진법 표현이 같기 때문이다.)
비트 연산자 ~10 ~0000 1010
각각의 비트 부정 1111 0101 == -11
음수 표현방법(2의 보수법)
-11
1) 절대치 11
2) 2진수 0000 1011
3) 보수 1111 0100
4) +1 [1111 0101]
이진법 음수로 거꾸로 돌리는 방법 (음수 표현방법을 역으로 하면된다.)
1111 0101
4)-1 1111 0100
3)보수 0000 1011
10진법 변환 2^3 + 2^1 + 1 = 11
1)절대치 11 ---> -11
System.out.println(10 & 3); //2
10 0000 1010
3 0000 0011
& 0000 0010 --> 각 비트가 둘다 참(1)일때만 참으로 연산 하겠다.
System.out.println(10 ^ 3); //9
10 0000 1010
3 0000 0011
^ 0000 1001 --> 서로 다를때 참인 연산자
System.out.println(10 | 3); //11
10 0000 1010
3 0000 0011
| 0000 1011 --> 각 비트 둘중 하나가 참이면 참으로 연산하겠다.
Shift 연산자
쉬프트(shift) 연산자 >> << >>>
System.out.println(15>>2); // 3출력
[0][0][0][0][1][1][1][1] //15
오른쪽 2칸 이동 시킨다음에 빈공간 다음 비트(첫 부호비트)로 앞을 채운다
첫 부호비트 가 1이면 1로 채우고 0이면 0으로 채운다
[ ][ ][0][0][0][0][1][1]
↑
부호비트
[0][0][0][0][0][0][1][1] //3
System.out.println(15>>>2); //3 첫부호비트 상관없이 앞에 공백을 모두 0으로 채운다.
[ ][ ][0][0][0][0][1][1]
[0][0][0][0][0][0][1][1]
System.out.println(15<<2); //60
[0][0][1][1][1][1][ ][ ]
왼쪽으로 2칸 이동 시킨 다음에 왼쪽 빈공간 모두 0으로 채워라
10 을 2진수로 출력하고 싶을때 0000 1010
매개변수는 int
10 -> 2진수
Integer.toBinaryString
System.out.println(Integer.toBinaryString(10)); // "1010"
string 리턴 자료형 (==자료형이 문자형이다)
10 -> 8진수
Integer.toOctalString
System.out.println(Integer.toOctalString(10)); // "12"
string 리턴 자료형 (==자료형이 문자형이다)
10-> 16진수
Integer.toHexString
System.out.println(Integer.toHexString(10)); // "a"
string 리턴 자료형 (==자료형이 문자형이다)
int-> String 형 변환
10 -> "10" 형 변환
String n = 10+""; //"10"
String -> int 형변환
int m = Integer.parseInt("10"); //10