시스템프로그래밍2 [전공_시스템프로그래밍] 정수(Integer)의 연산 컴퓨터에서의 정수의 연산은 역시나 인간의 연산과는 다르게 인간이 처음 컴퓨터를 만들 때 정해놓은 방식과 그 한계에 의해서 왜곡되어서 표현된다. 1. 덧셈 정수의 덧셈은 이진수를 더하는 것과 같다. 실제로 컴퓨터는 ( u+v mod 2^32)로 계산이 된다. 여기서 주의해야할 점은 덧셈을 했을때 해당 워드 범위를 벗어나면 어떻게 되는지에 대해 알아야한다. 먼저 비부호형(unsigned)의 경우 워드범위를 벗어난 비트(캐리)는 버려진다. 예를 들면, 1111 + 1111 = 11110 = 1110 (2진수) 위 예시와 그림처럼 캐리가 사라짐으로써 원래값보다 작아지는 것을 볼수있다. 다음으로 부호형 정수의 덧셈 역시 비부호형 정수와 비슷한형태로 이루어지는데, 맨앞의 캐리를 버린다는 개념은 동일하지만, 두가지 .. 2019. 9. 14. [전공_시스템프로그래밍] 정수(Integer) 부호확장 부호확장의 목적은 w비트의 정수 x가 주어질 떄 x를 w+k 비트보다 길이가 긴 정수로 변환시키기 위함이다. 규칙은 간단하다. x의 부호비트를 k개 복사하여 뒤에 붙여준다. 아래와 같다. 예를 들면, Decimal Hex Binary x 15213 3B 6D 00111011 01101101 ix 15213 00 00 3B 6D 00... 00111011 01101101 y -15213 C4 93 11000100 10010011 iy -15213 FF FF C4 93 11... 11000100 10010011 위와 같이 부호비트가 0이면 0을, 1이면 1을 확장할 비트수 만큼 채워주면 된다. C언어에서는 이러한 부호확장을 자동으로 해준다. 2019. 9. 9. 이전 1 다음