●Integer (정수)

 ▷컴퓨터에서 정수를 표현하는 방법

 ▶바이트 크기

  ▷char: 1

  ▷short: 2

  ▷int: 4

  ▷long: 4 (32bit) / 8 (64bit)

 

 ▶음수 표현

  ▶부호 비트

   ▷가장 앞의 비트를 부호 비트로 지정한다. (앞이 1이면 -부호)

   ▷+0, -0이 동시에 존재한다.

   ▷+, - 연산이 힘들다.

 

  ▶1의 보수

   ▷해당 수에 대한 1의 보수(=모든 비트 반전)가 -부호.

   ▷+0, -0이 동시에 존재한다.

 

  ▶2의 보수

   ▷해당 수에 대한 2의 보수(2의 보수=1의 보수 +1)가 -부호.

   ▷0도 하나이고, +/- 연산도 잘 되기 때문에, 가장 선호된다.

   ▷앞으로 나오는 모든 음수는 2의 보수로 계산하는 것을 전제로 한다.

 ▶Type Casting

  ▶Signed <-> Unsigned

   ▷둘 모두 0111->1000을 제외하고는 비트가 커질수록 커진다.

   ▷비트 패턴이 유지되며, 암시적일 경우에는 Signed가 Unsigned로 Casting된다.

  ▶int -> long (Expanding)

   ▷부호비트 확장

  ▶long -> int (Truncating)

   ▷앞의 k-bits 자르기. -> 정보 손실 가능성

 

 

 

 ▶Operation

  ▶Addition

   ▷두 비트를 더하고, 표현 가능 범위를 넘어가면 자름.

   ▷Unsigned의 경우 Overflow가 하나, Signed는 두개(Pos, Neg) 존재함.

  ▶Multiplication

   ▷Unsigned: 범위를 넘어가는 상위 비트 무시

   ▷Signed: 범위를 넘어가는 상위 비트 무시

   ▶Shift 연산 이용 (2의 지수승 이용)

    ▷u << k = u * 2^k임을 이용하여, Shift연산, Addition연산으로 Multiplication 계산

 

  ▶Divide (Shift 이용)

   ▷u >> k = u / 2^k임을 이용.

   ▷0 이하에서는 내림이 반대로 되기 때문에, 약간의 수정이 필요

   ▷(x+2^k -1) / 2^k [ x+(1<<k)-1) >> k ]

 

  ▶Negation (-부호)

   ▷~x + 1 = - x

   ▷x가 TMin이거나 0일때는, x = -x

   

 

'컴퓨터 지식 > 시스템' 카테고리의 다른 글

Assembly-Control  (0) 2020.10.13
Assembly  (0) 2020.10.07
Architecture / Machine Code  (0) 2020.10.07
Float  (0) 2020.10.07
Bit, Byte  (0) 2020.10.06

+ Recent posts