[TIL][CS 기초] 32 Bit vs 64 Bit | 2's complement, 1's complement | 실수 표현법

2024. 3. 7. 23:38· 공부기록/CS
목차
  1. 32bit vs 64bit
  2. bit 와 Byte
  3. Word (워드)
  4. 32bit / 64bit
  5. 2's complement, 1's complement (2의 보수, 1의 보수)
  6. 음수 3을 8비트로 표기하는 방법
  7. 실수 표현법
  8. Reference
  9. 32bit vs 64bit
  10. 2's complement, 1's complement

가장 기초적인 부분, 외워야 하는 키워드 정리

 

32bit vs 64bit

bit 와 Byte

비트는 바이너리 디지트의 약자로 0과 1만을 나타낼 수 있는 신호(디지털 표현)를 나타내는 최소 단위입니다. 

바이트는 8개의 비트로 구성된 정보의 기본 단위입니다. 알파벳이나 숫자를 한 개 저장할 수 있습니다.

 

Word (워드)

하나의 명령어로 저장 장치로부터 레지스터에 옮겨 놓을 수 있는(실행가능한) 데이터의 처리 단위를 뜻합니다.

메모리에서 레지스터, 혹은 산술 논리 장치(ALU arithmetic and logical unit) 를 통해 데이터를 조작할 때 한 번의 명령어로 처리될 수 있는 최대 데이터 크기가 곧 처리 단위가 됩니다.

 

32bit / 64bit

32bit와 64bit 모두 해당 단위 머신(CPU)의 기본 데이터 처리 단위(워드)가 32비트와 64비트라는 뜻입니다. 즉, 컴퓨터가 한 번에 처리할 수 있는 용량이 32비트 컴퓨터는 4바이트, 64비트 컴퓨터는 8바이트 단위로 끊어 데이터를 처리합니다. 

 

시스템적 차이로는 크게 1) 범용 레지스터 크기 차이 2)메모리 주소 공간 크기 차이와 3)실행 가능한 응용 프로그램 종류의 차이가 있습니다. 32비트 프로세스의 범용 레지스터는 4바이트(32비트), 64비트 프로세스의 범용 레지스터는 8바이트(64비트)입니다.

 

따라서 메모리 주소 공간 또한 차이가 납니다. 32비트는 2의 32승, 약 4GB만큼의 메모리 주소 공간을 갖습니다. 64비트는 2의 64비트, 원칙적으로 약 18엑사바이트만큼의 주소 공간을 갖지만 실제로는 하위 48비트 만큼의 메모리 공간을 사용합니다. 나머지 공간은 addressing mode범위라고 합니다. 

 

32bit는 레지스터가 8바이트만큼의 정보를 담을 수 없는데, 64비트 체제에서 사용될 것을 전제로 제작한 응용프로그램이 8바이트 단위로 연산을 처리하려 하기 때문에 64비트 응용 프로그램을 사용할 수 없습니다. 반대로 64비트 머신은 32비트 응용 프로그램을 사용할 수 있습니다. 윈도우의 경우 program files(x86) 폴더에 32bit 응용프로그램이 설치되어있다. (32bit: x86/ 64bit: x64)


 

2's complement, 1's complement (2의 보수, 1의 보수)

aka. 컴퓨터가 음수를 다루는 방법

 

1의 보수와 2의 보수는 컴퓨터가 음수를 다루는 계산 방법입니다.

 

CPU의 산술연산장치는 기 사칙연산시 덧셈만 활용할 수 있기에, 뺄셈 계산 시 덧셈 형식으로 뺄셈을 계산해야 합니다. 이때 뺄셈으로 빼지는 숫자를 음수 형태로 바꾸어 주어야 합니다. 여기서 컴퓨터는 2진법을 사용하므로, 빼어지는 수 n와 더했을 때 0이 되는 수 x가 n의 2의 보수가 됩니다. 

 

1의 보수는 주어진 수를 2진법으로 변환한 뒤, 0과 1을 반전시켜 얻습니다.

2의 보수는  1의 보수에 1을 더해 얻습니다. 

 

컴퓨터는 n개의 비트를 이용하여 2의 n승 개의 정수만 표현할 수 있습니다. 하지만 정수 연산에는 음과 양의 기호 표기 또한 필요하기에, 첫번째 비트를 활용해 기호를 표기합니다. 맨 앞의 비트가 0일 때에는 양수, 1일 때에는 음수를 뜻합니다. 

 

4비트(4자리의 0/1 표시 자리)의 수일 경우, 2의 보수 값은 다음과 같습니다. 

10진수 2의 보수
-8 1000
-7 1001
-6 1010
-5 1011
-4 1100
-3 1101
-2 1110
-1 1111
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111

 

위 표의 경우에는 부호 있는(signed) 정수이고, -8에서 7까지의 수를 표기합니다. 맨 앞자리의 비트를 부호 표기에 할당하기 때문입니다. 

bit 수
4bit
8bit
16bit
32bit
부호 없는 정수
0~15
0~255
0~65535
0~4,294,967,296
부호 있는 정수
-8 ~ +7
-128 ~ + 127
-32,768 ~ +32767
-2,147,483,648 ~ +2,147,483,647

음수 3을 8비트로 표기하는 방법

음수 3을 8비트로 표기하려면 정수 3을 2의 보수로 변환하여 표기합니다. 

1) 3을 이진법 수로 변환합니다. 8비트이므로 총 8자리로 표기할 수 있습니다. 0000 0011 이 됩니다. 

2) 이를 1의 보수로 표현합니다. 각 비트의 0과 1을 반전시켜줍니다. : 1111 1100이 됩니다.

3) 여기에 1을 더해 2의 보수를 만듭니다: 1111 1101 

 

Q 단순히 맨 앞 bit만 0(양수)/1(음수) 표기를 따라주면 되지 않나요?

3을 예시로 들자면, 위와 같은 방법으로 -3은 1000 0011 으로 표기될 수 있습니다. 그러나 이 수를 가지고 다른 연산을 하는 순간 2의 보수 방법을 사용하므로 값이 오염되어 원하지 않은 결과를 야기합니다. 

 

실수 표현법

컴퓨터가 실수를 표현하는 방식으로 고정 소수점과 부동 소수점 방법이 있으며 그 특징을 고려해서 선택해야 합니다.

 

고정 소수점(fixed point) 방식은 실수를 정수부와 소수부로 나누어 표현합니다. 각 부의 비트 수는 고정되어 있기에, 계산 과정에서 발생할 수 있는 오차를 줄일 수 있습니다. 그러나 너무 큰 수나 너무 작은 수는 표현하기 어렵습니다. 정확도는 높으나 표현할 수 있는 범위가 제한됩니다. 이런 방식은 정밀 계산이 필요한 계산에서 사용됩니다. 

 

부동 소수점(floating point)은 실수를 가수부와 지수부로 나누어 표현합니다. 표현할 수 있는 수의 범위는 넓으나 정밀도가 낮을 수 있습니다. 실수를 이진법으로 변환하는 과정에서 무한 소수가 발생할 수 있기 때문이며 오차가 날 가능성이 큽니다. 따라서 넓은 범위의 수를 처리할 때 주로 사용됩니다.(게임, 대규모 계산 등)

 


Reference

32bit vs 64bit

Why do x86-64 systems have only a 48 bit virtual address space?

https://www.howtogeek.com/129178/why-does-64-bit-windows-need-a-separate-program-files-x86-folder/

https://eine.tistory.com/entry/64%EB%B9%84%ED%8A%B8-32%EB%B9%84%ED%8A%B8-CPU%EC%99%80-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

2's complement, 1's complement

1의 보수와 2의 보수를 이해하자!

컴퓨터 음의 정수 표현 방법

1’s and 2’s complement of a Binary Number

Decimal/Two’s Complement Converter

2의 보수 (1의 보수) 연산 - 2진수의 뺄셈

컴퓨터 음의 정수 표현 방법

 

 

'공부기록 > CS' 카테고리의 다른 글

[TIL][CS 기초] jpg, png, gif / 픽셀 | 유니코드 / UTF-8  (0) 2024.03.27
[TIL][CS 기초] CPU vs GPU | SSD, HDD  (0) 2024.03.11
[TIL][Fri][CSAPP] ch 6. The memory hierachy  (0) 2023.11.10
[TIL][CS기초] Compile | Compiler, Interpreter | Type System | Typing :: Static & Dynamic  (0) 2023.11.01
[TIL][Tue] [CSAPP/CH.3] Machine Programming 1: Basics  (0) 2023.10.31
  1. 32bit vs 64bit
  2. bit 와 Byte
  3. Word (워드)
  4. 32bit / 64bit
  5. 2's complement, 1's complement (2의 보수, 1의 보수)
  6. 음수 3을 8비트로 표기하는 방법
  7. 실수 표현법
  8. Reference
  9. 32bit vs 64bit
  10. 2's complement, 1's complement
'공부기록/CS' 카테고리의 다른 글
  • [TIL][CS 기초] jpg, png, gif / 픽셀 | 유니코드 / UTF-8
  • [TIL][CS 기초] CPU vs GPU | SSD, HDD
  • [TIL][Fri][CSAPP] ch 6. The memory hierachy
  • [TIL][CS기초] Compile | Compiler, Interpreter | Type System | Typing :: Static & Dynamic
J융
J융
Recording of development
J융
Develop day by day
J융
전체
오늘
어제
  • 분류 전체보기 (67)
    • 공부기록 (63)
      • CS (8)
      • OS (15)
      • Algorithm (19)
      • Web (3)
      • HTML&CSS (6)
      • Electron (1)
      • JavaScript (5)
      • Network (0)
      • C (2)
      • Python (3)
      • Git (1)
    • 개발일기 (3)
      • Alice기록 (0)
      • Krafton Jungle 기록 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 비전공자개발자
  • pintos
  • 앨리스트랙
  • CG
  • 기술면접대비
  • 엘리스AI트랙
  • #cs기초
  • 개발일기
  • 정글공부키워드
  • fe
  • cs기초
  • 부트캠프
  • cs지식
  • 수강후기
  • 크래프톤정글
  • os
  • 알고리즘
  • JS기초
  • vm
  • Web

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
J융
[TIL][CS 기초] 32 Bit vs 64 Bit | 2's complement, 1's complement | 실수 표현법
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.