컴퓨터 공학 - 기수법 및 비트, 보수 학습
기수법
- 10진수(DEC, decimal) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- 2진수(BIN, binary) : 0, 1
- 8진수 (OCT, octal) : 0, 1, 2, 3, 4, 5, 6, 7
- 16진수 (HEX, hexadecimal) : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
16진수 ↔ 2진수 변환 방법
16진수에 2진수 4자리 설정할 것
예시1
2fa(16) --> 11111010(2)
74(16) --> 01110100(2)
참고1
2a = 0b1010 (0b : binary라는 의미)
hex(a) --> 0xa (0x : hex라는 의미)
32bit와 64bit 나누는 기준
- 한번에 보낼 수 있는 데이터의 양
- 32bit : CPU에서 RAM으로 연결된 와이어가 32개 (와이어 1개당 1bit 전송)
- 64bit : CPU에서 RAM으로 연결된 와이어가 64개
1 | CPU에서 RAM으로 데이터 전송 시, 32bit의 경우 2진수로 32자리를 주소로 할당하게 되는데, 길이가 너무 길어서 16진수로 주소를 할당한다. |
32bit
2^32개의 2진수로 표현 가능 (약 4G개의 byte로 구성 –> 램 4GB까지만 돌아갈 수 있다.)
64bit
2^64개의 2진수로 표현 가능(약 18exa개의 byte로 구성)
high-level language & low-level-language
high-leve language
- 대표언어: C, C++ << Python, Javascript
- CPU가 달라져도, compile만 다시 돌리면 된다.
- 코딩 완료 이후, compile만 돌린다. (대신 메모리 바이트에 따라 int, short, char를 선택해야 한다.)
low-level language
- 대표언어 : assembly language
- 하드웨어에 binding되어 있다. –> 코딩 모두 완료해도, CPU 달라지면 다시 짜야 한다.
하드웨어 추상화
- CPU 레지스트리, 메모리 상관없이 독립적인 코딩 작성을 허용한다.
- 하드웨어의 차이를 숨겨서 응용 프로그램이 작동할 수 있는 일관된 플랫폼을 제공한다.)
음의 정수 표현
- 부호 비트는 1
- 정수를 2의 보수(two’s complement)로 저장
- ex) -43 -> 43 -> 0010 1011(2) -> 1101 0100(2) (1의 보수) -> 1101 0101(2) (2의 보수)
9의 보수1
2
3
43의 9의 보수는 6이다.
--> 한자리 수에서 가장 큰 수가 되기 위해 더하는 값
23의 9의 보수는 76이다.
--> 두자리 수에서 가장 큰 수가 되기 위해 더하는 값
1의 보수1
210110101(2)의 1의 보수는 01001010(2)
--> 11111111(2)가 되기 위해 더하는 값
2의 보수1
210110101(2)의 2의 보수는 01001011(2)
--> 1의 보수에서 마지막 자리에 +1한 값
보수를 만든 이유
- CPU에서는 빼기(-) 기능이 없다.
1
2
3
4
59 - 4
= 9 + (-4)
= 1001(2) + 1100(2)
= 0101(2)
= 5
Posted
tags:
{ Computer Science }
{ Study }