1. 2진수
1.1 2진수와 16진수
- 변환 : 16진수는 십진수로 0~15까지 표현이 가능하다. 이진수로는 0000~1111까지 표현이 가능하다.
2진수에서 16진수로 변환은 오른쪽부터 4bit씩 잘라서 변환하면 된다.
1110001(2) => 111(2) = 2^3 - 1 = 7
0001(2) = 1
1110001(2) = 71(16)
1.2 용어
- word : 사용하는 프로세서가 몇 비트냐에 따라 워드의 크기가 바뀐다.
한번에 처리할 수 있는 단위(일반적으로 레지스터의 크기라고 보며된다.)
32bit processor라면 32bit = 1word
※ 현재 공부하고 있는 프로세서가 몇 비트인지 알아둬야 한다.
(단, 32bit 임에도 SW상에서는 16bit를 1word로 처리하는 프로세서가 있다.)
(이유는 나중에... 나에게 별로 중요하지 않은 부분이라 앞으로 설명할 기회가 있을지는 모르겠다.)
- MSB(Most Significant Bit), LSB(Least SIgnificant Bit)
MSB : 최상위 비트
LSB : 최하위 비트
101100(2) 에서
1 0 1 1 0 0
MSB LSB
1.3 2진수의 표현
- Signed-Magnitude
- One's Complement
- Two's Complement
- 앞으로는 2의 보수만 사용할 것이다. 1의 보수나 부호와 크기 표현은 대표적으로 0이 두개인 문제가 발생함.(다른 문제도 있음)
(설명은 귀찮으니 패스...)
- 2의 보수에서 표현 범위 : [-2^(N-1) ~ 2^(N-1)-1] (참고로 '[ ]'는 닫힌구간)
1.4 Overflow / Underflow
- Overflow : 절대값의 표현범위가 자료형이 나타낼 수 있는 범위를 넘어설 때
17.12.19 추가 : 코딩시 signed인지 unsigned인지 확인이 중요
c++에서 벡터 v.size() - 1 은 overflow를 일으킬 수 있음. v.size()는 unsigned int 형으로 만약 벡터 크기가 0일 경우
0 - 1은 4,294,967,295(1111 1111 | 1111 1111 | 1111 1111 | 1111 1111, 32bit) 가 나옴
(위와 같은 경우를 underflow라고 하는건 잘못된 표현, underflow는 엄연히 다른 표현임)
overflow를 피하려면 1. (explicit) type casting
2. v.size() - 1 표현을 안쓰는 것
- Underflow : 부동소수점 표현방식에서 지수부가 타입의 한계를 넘어 작아지면 0에 가까워 지는 것
(난 잘 주워오니까 그림으로 때우겠다)
출처는 아래에 있습니다.
- 2의 보수 표현(signed)에서 양수 + 음수의 덧셈은 오버플로우를 일으키지 않음
- 음수 + 음수의 크기가 -2^(N-1)보다 작거나 양수 + 양수의 크기가 2^(N-1) - 1 보다 큰 경우를 오버플로우
즉, 캐리의 여부와 관계없이 앞의 부호가 바뀌는 경우가 오버플로우(단, 2의 보수 표현에서만)
1.5 sign-extention
- MSB를 계속 늘리면 됨
- 3 = 0011(2) = 0000 0011(2)
- -3 = 1101(2) = 1111 1101(2)
-출처
http://slideplayer.com/slide/5946574/
https://courses.cs.washington.edu/courses/cse370/98sp/lectures/04-combex/sld026.htm
http://slideplayer.com/slide/9942560/
https://namu.wiki/w/%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C
https://stackoverflow.com/questions/6360049/what-are-arithmetic-underflow-and-overflow-in-c
2. 논리 게이트
2.1 논리 게이트
- 하나 또는 그 이상의 2진수 입력을 받아서 하나의 출력을 만들어 내는 간단한 디지털 회로
2.2 논리 게이트 종류
※ 논리게이트의 심벌과 진리표는 구글 검색
1) NOT
2) BUF : 버퍼 : 논리적 관점 - 데이터의 전달
아날로그적 관점 - 많은 양의 전류를 공급, 하나의 입력을 다른 많은 게이트에게 전달, 데이터 복원
3) AND
4) OR
5) XOR
6) NAND
7) NOR
8) XNOR
- N input gate : 2개씩 나눠서 진리표 써보면 됨
※ N input XOR는 parity gate라고도 함
'먹고살려면 > Com Architecture' 카테고리의 다른 글
번외편 NAND Flash Memory는 왜 NAND라고 부를까? (0) | 2017.12.19 |
---|---|
시작하기전에. 디지털논리와 컴퓨터 아키텍쳐 방향 (0) | 2017.12.01 |