프로그래밍[Univ]/하드웨어

[하드웨어] Digital Abstraction ( 숫자의 추상화 )

Cloud Travel 2012. 3. 8. 10:50
일상생활의 모든 정보는 아날로그로 되어있다.(연속적인 정수)
Digital Circuits 단계는 숫자의 추상화를 통해서 아날로그정보를 디지털 정보로 변환시킨다.(비연속적 정수)

ⓐ 개요
 - babbage
  > 0-9를 이용한 기계식 컴퓨터를 생성
  > 25개의 low-gear를 이용해 25개의 숫자를 연산 가능하게 만들었다.(미완성)
 - Georage Boole
  > Boolean logic을 만들었다. ( 0과 1의 logic )
  > 1(true, up), 0(false, down) 
 - babbage가 0-9를 이용해 컴퓨터 생성하는과정이 복잡하여 Boole의 Boolean logic을 도입

ⓑ Number System
 - Decimal Numbers
  > 10을 참조하여 표현되는 숫자.
  > n - digit Decimal Number
   >> 10^n개의 숫자를 표현가능하다.
   >> range : 0 ~ 10^n -1
 - Binary Numbers
  > 0과 1로 이루어진 수
  > 2를 기본으로하여 표현되는 숫자
  > n - digit binary numbers
   >> 2^n개의 숫자를 표현가능하다.
   >> range : 0 ~ 2^n - 1
  - Hexadecimal Numbers
   > 0~9, A-F로 이루어진 수
   > 16을 기본으로 하여 숫자를 표현을 한다.
   > 긴 Binary Number를 표현하기 위해서 만들어 졌다.
   > 16진수를 표현하는데 있어 숫자앞에 "0x"를 붙이는데, 이것은 숫자와 변수를 구별하기 위해서이다.

ⓒ Data Unit
 - Byte = 8bit
 - Nibble = 1/2Byte = 4bit
 - Words = CPU가 처리하는 데이터 크기로 CPU에 따라서 다르다.
 - msb (most significant bit), lsb (least significant bit) 
 - MSB (most significant Byte), LSB (least significant Byte) 
  >> msb는 sign bit(부호 비트)로 나중에 중요한 역할을 한다.  
 - 2^22 = 2^2 * 2^20 = 4Mega  
 - 2^32 = 4 * 2^30 = 4Giga  
 - 2^64 = 16 * 2^60 = 16Exa

ⓓ Two's Complement Numbers : 2의 보수 
 - Binary number에 부호를 넣기 위한 노력  
  > N bit의 길이가 있다면 N-1bit로 숫자를 표현하고 N번째에는 0과 1을 이용해 양과 음의 정수를 표현(1의보수)
   ex) -7 > 7의 2진표현 : 0111(2) > sign bit을 음수 표현 > 1111(2) = -7   
  > 이 방법에 의해서 만들어진 음의 수는 일반적인 더하기 법칙에 위배가 된다.   
  > 0을 표현하는 방법이 2가지 존재 : 0000(2), 1000(2)
 - 2의 보수를 이용한 음수 표현  
  > 위와 원리는 같지만 만드는 과정이 다르다.   
   ex) -3 > 3의 2진 표현 : 0011(2) > 0과 1의 reverse : 1100(2) > + 1 : 1101(2) = -3  
  > 2의 보수를 정수로 바꾸는 방법도 위와 같은 방법을 취하면 된다. 
   ex) 1101(2) > 0010(2) > 0011(2) = 3 > sign bit 확인 : -3
 > N - digit Two's Complement Numbers   
  >> 2^n개의 숫자 표현 가능  
  >> range : -2^(n-1) ~ 2^(n-1) - 1
       (range에서 음수쪽으로 하나가 더 많은 이유는 2의 보수 표현에서 2^(n-1)표현이 이중적이기 때문이다.)

ⓔ Overflow에 대한 extension하는 방법
 - Sign extension
  > msb(signbit)을 오른쪽으로 채워 넣는다.
  ex1) 4bit 3  >> 8bit 3
        3 = 0011(2) >> 00000011(2) = 3
  ex2) 4bit -5 >> 8bit -5
       -5 = 1011(2) >> 11111011(2) = -5
  > Sign Number(2의 보수)에서 값이 변하지가 않는다. 
 - zero extension
  > 새로 추가되는 bit를 0으로 채워 넣는다.
  ex1) 4bit 11 >> 8bit 11
         11 = 1011(2) >> 00001011(2) = 11
  > unsigned number에서 사용 되며, sign number에서 사용시 값이 변할 소지가 존재한다.