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라고도 함

+ Recent posts