1) 산술 연산장치 : 산술 연산을 수행
2) 논리 연산장치 : 논리연산 수행
3) 시프트 레지스터 : 비트들을 좌측 or 우측으로 이동
4) 보수기 : 음수표현
5) 상태레지스터 : 연산 결과의 상태를 나타내는 플래그를 저장
4비트기준
1) 부호화 방법 : 7 ~ -7
2) 1의 보수 방법 : 7 ~ -7
3) 2의 보수 방법 : 7~ -8 ( -0 에 대한 값은 없음)
1) 보수화 한다.
2) 1을 더한다.
32비트기준
signed는 -2147483648~2147483647 까지의 갚을 갖는다.
unsigned는 0~4294967259 까지의 값을 갖는다.
unsigned의 표현은 값 뒤에 U를 적어준다. ex)4294967259U
signed(int) 값과 unsigned 값을 비교 할 때는 signed를 unsigned로 변환 후 둘을 비교한다.
signed가 unsigned로
1) signed에서 -1 은 unsigned에서는 4294967259U 이다.
2) 즉 음수 signed 값은 unsigned로 바꾸게 되면, 가 된다.
unsigned가 signed로
1) unsigned가 4294967259 일 때, signed로 변환 시, -1이 된다.
2) unsigned가 2147483648 일 때, signed로 변환 시, -2147483648이 된다.
3) 즉 값을 초과하는 unsigned의 값을 signed로 바꾸면 가 된다.
1) 먼저 주어진 수가 unsigned 인지 signed인지 타입에 대해서 인식을 한다.
2) 타입이 다르면, unsigned로 통일을 해준다.
3) unsigned로 계산시 signed 값에 를 해준다.
4) signed로 계산시 unsigned 값에 를 해준다.