23.01.05 bit 단위 연산 ~(틸드)와 음수의 표현법, 아스키코드
비트단위(bitwise) 연산자 ~: tilde, 틸드라고 읽는다
비트단위 연산자는 bit를 0 ->1로 혹은 1->0으로 바꾸어준다.
예를 들어 십진수 1은 2진수로 바꾸면 00000000 00000000 00000000 00000001 이다.
이를 ~1로 비트단위로 연산자로 바꾸어주면 11111111 11111111 11111111 11111110 이 된다.
이는 -2이다.
그 이유는 음의 정수는 "2의 보수 표현법"으로 저장되기 때문이다.
#음수의 표현 방법
음수의 표현방법은 크게 3가지이다.
1. 부호비트 사용: 최상위 1비트를 부호를 사용하는데 이용
2. 1의 보수법: 해당양수의 모든 비트를 반전하여 음수로 표현하는 방법 -> ~를 사용한다고 생각하면 편함
즉, 위의 1의 예시에서 ~1이 -2가 아닌 -1을 의미한다고 생각하면 된다.
다만, 위의 2가지 방법 모두 +0과 -0, 즉 2개의 0이 존재하게 된다.
3. 2의 보수법
2의 보수법은 1의 보수법에다가 1을 더하여 음수를 표현하는 방법이다.
이 방법을 사용하면 2의 보수를 구하는 과정에서 오버플로우가 발생해 -0이 +0으로 표현된다.
예시를 들면 다음과 같다.
+5 -> 00000000 00000000 00000000 00000101
-5 -> 11111111 11111111 11111111 11111011
0 -> 1 00000000 00000000 00000000 00000000
즉 맨앞의 1은 오버플로우되어 0이 하나만(+0) 존재할 수 밖에 없다.
현재 대다수 시스템에서는 2의 보수법을 채택한다고 한다.
# ~연산은 int에서만 가능하다
# bit 단위 연산과 아닌 것을 잘 구분하자
** 비트단위(bitwise)연산자는 아래와 같다
~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor),
<<(bitwise left shift), >>(bitwise right shift)
추가:

아스키 코드표이다. 기억하면 좋은건 A: 65, a: 97, 알파벳은 25글자