on
컴퓨터 사이언스 부트캠프 with 파이썬 - 2장 정수
컴퓨터 사이언스 부트캠프 with 파이썬 - 2장 정수
1. 컴퓨터에서 수를 표현하는 방법
수를 표현하는 방법은 기수법(numeral system)이라고 한다.
밑수를 정하면 밑수의 갯수만큼 숫자를 사용해서 수를 나타낼수 있다.
ex) 10진수 - 밑수는 10이며 총 10개의 숫자로 수를 표현( 0,1,2,…,9)
주로 2진수, 10진수, 16진수를 사용한다.
2. 10진수를 2진수로
10진수를 2진수로 바꾸려면 해당 수의 가장 가까운 2의 거듭제곱 수를 구해서 빼가며 구하면 된다.
ex) 10진수 36의 가장 가까운 거듭제곱수는 32(25), 32를 뺀 나머지 4의 가장 가까운 거듭제곱수는 4(22), 따라서 10진수의 36을 2진수로 표현하면 100100 이다.
3. 2진수를 10진수로
반대로 2진수를 10진수로 바꾸려면 해당자리수의 2의거듭제곱수를 더하면 된다.
ex) 2진수의 11011은 1+2+8+16 = 27이다.
4. 16진수를 2진수로
16진수의 한자리는 2진수 4자리로 치환이 가능하다.
16진수 한자리의 최대값인 f는 2진수로 1111(10진수로 15) 이다.
ex) 16진수 2d를 2진수로 치환하면 0010 1101이다.
cf) hex() 함수는 정수를 16진수로 표현하는 함수이다.
5. 양의정수
일반적인 정수를 표현할 때 컴퓨터는 음과 양의 정수를 구분하기위해서 맨 앞의 비트를 부호를 나타내는대 쓰게된다.
ex) 1바이트의 메모리로 25를 표현하고자 한다면. 00011001 이 된다.
따라서 1바이트로 나타낼수 있는 수의 범위는 -128~127이다. (정수형 자료형으로 메모리를 정의한다면 0~255로 표현이 가능하다)
6. 음의정수
컴퓨터는 음수를 표현할때 2의 보수를 사용한다. 보수는 보충하는 수라는 뜻으로 해당 수에서 각 자릿수 수를 빼면된다.
2진수에서 2의 보수를 구하고자한다면 1의 보수에 +1를 하면 2의 보수가된다.
ex) 1바이트의 메모리로 -4를 표현하고자 한다면. 0000 0100에서 1의 보수(1111 1011)을 구한후 +1(1111 1100)을 하면된다.
파이썬 출력값은 16진수로 표현되므로 -4는 0xFC로 표현되게 된다.
6-1 음수를 2의 보수로 표현하는 이유
0을 표현할때 보수를 이용하지 않는다면 0의 표현법은 +0 과 -0 두가지가되게되어, 비트를 낭비하게된다.
또한 뺄셈을하는대에 있어서 계산을 용이하게 할 수 있다.