ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 23.01.05 bit 단위 연산 ~(틸드)와 음수의 표현법, 아스키코드
    개발 이야기/TIL 2023. 1. 6. 12:44

    비트단위(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글자 

Designed by Tistory.