Post

이진수와 16진수

이 포스트는 CS에서 많이 쓰는 이진수와 16진수에 대해 설명한다.

Unsigned Binary Integers

만약 n-bit number이라면 0부터 \(2^n-1\)까지 표현이 가능하다.

2s-Complement Signed Integers

만약 n-bit number이라면 \(-2^{n-1}\)부터 \(2^{n-1}-1\)까지 표현 가능하다.
총 64bit라고 하자. 그럼 (오른쪽 기준)bit 63은 sign bit가 된다. 1이면 음수, 0이면 non-negative.
변환법:

  • 양수 모든 bit 뒤집기 + 1
  • 0: 0000 0000 … 0000
  • -1: 1111 1111 … 1111
  • 가장 작은 수: 1000 0000 … 0000 : \(-2^{n-1}\)
  • 가장 큰 수: 0111 1111 … 1111 : \(2^{n-1}-1\)

Sign Extension

계산을 위해 8-bit 수를 16-bit 수로 늘려서 계산해야할 때가 있다. 그럴 때는 부호와 크기를 동일하게 가져가능 방식으로 bit수를 늘려야한다. 이때 sign bit를 왼쪽으로 쭉 늘리면 된다.

  • +2: 0000 0010 => 0000 0000 0000 0010
  • -2: 1111 1110 => 1111 1111 1111 1110

Hexadecimal

컴퓨터에서 2진수를 쓰지만 2진수는 너무 길어지기 때문에 실제로는 16진수도 많이쓴다(사람들끼리 편의를 위해)

000004010081000c1100
100015010191001d1101
2001060110a1010e1110
3001170111b1011f1111

ex) eca8 6420 = 1110 1100 1010 1000 0110 0100 0010 0000

This post is licensed under CC BY 4.0 by the author.