●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 |