진법
2 - 0,1
8- 0,1,2,3,4,5,6,7
16 - 0,1,2,3,4,5,6,7,8,9,A,B,C,D,D,E,F
ex) 십진수 10
2진수로 변환
2진법
2의 세제곱 = 8진법 =2진수 3자리가 8진수
2의 네제곱 = 16진법 = 2진수 4자리가 16진수
ex) 110101
1. 8진수
위에서 말했듯이 2진수 3자리가 8진수이므로 3자리를 쪼개어 생각한다
110 /101
110 = 6
101= 5
따라서 110101의 8진수는 65
2.16진수
11 /0101
11=B
0101 =5
따라서 B5가 16진수이다.
2진수 계산 = 생략, 다아니깐ㅎㅎㅎ
8진법 계산 ex)76+2 = 100
76
+
2
100
그 이유는 6+2 =0 8진법에서는 0~7이다. 8이 되면 10진법의 에서 9+1이 10이고 한 자리수에 올라가듯이 8진법에서도 6+2에서 0이되고 1이 올라간다. 그리고 7과 더해져서 7+1이 되어 0이 되고 한자리가 올라가서 100이 된다.
반대로 2진수로 변환
8진수 165
1/ 6/ 5
1= 1
6 = 110
5 = 101
1110101이된다.
16진수 75
7=111
5=101
1110101 여기서 잠깐 111101이 아님!!!
위의 글을 잘보면 16진수는 네자리가 2진수 한 자리라고 되어있다
이점을 놓치지 않아야 한다. 111 101의 공백부분의 0을 써야한다
따라서 0111 /0101이 된다. 그래서 붙이면 1110101이 된다. 제일 앞에
0은 아무의미 없으니 안써도 된다. 보기좋으니깐
ㅎㅎ
소수점 2진수로 변환하기
예) 1.5를 2진수로 변환하면, 1.1이 된다.
위의 소수인 1.5는 당연히 그대로 놔둔다. 소수점만 생각하는데
0.5를 2로 곱한다. 그러면1.0이 된다
10진수를 2진수로 변환시에는 2로 계속 나누지만 반대로 소수점을 2로 곱한다.
곱해서 0이 되면 멈추고 그의 숫자를 기입하면 된다. 위의 0.5를 2로 곱하여 1.0이 나왔다.
그 1.0의 1을 적으면 된다. 그래서 1.5의 2진수는 앞에 1.5의 1은 그대로 적고 뒤에 0.5를 곱하여 나온 1.0에 1을 소수점 자리에 적게 되면은 1.1이 되는 것이다.
그런데 1.4를 예를 들어보자.
1.4도 마찬가지로 1은 그대로 놔두고 0.4를 2로 곱해보자
0.4*2 = 0.8 ->0
0.8 * 2 =1.6 ->1
여기서 1.6의 0.만 곱한다. 1은 없다고 친다.
0.6*2 =1.2 -> 1
0.2*2 =0.4 -> 0
여기서 낌새를 챈다. 0.4가 다시 나왔다.
그래서 곱해도 계속 같은 형식으로 반복이 될것이다
0, 1, 0, 0, 1, 0.......
이런식으로 반복이 된다. 따라서 1.4를 2진수는 1.010010010......
이런식으로 반복되어 완벽히 표현할 수 없다.
8비트 연산개념
부호가 1이면 - , 0이면 + 이것을 부호비트라고 한다.
부호 |
숫자 | |||||||
- |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
+ |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 127 128 255
0 127 128 255
오른쪽 128에서 255를 왼쪽으로 옮기면, 아래 그림처럼 된다.
128 129 130..... 255 0 1 2.....
(-128) (-127) (-129) (-1)
8비트 10진수 변환시 1111 1111 255이다. 그러나 이것은 -1로 나온다.
부호비트를 잘생각해보자.
0000 0001 -> 앞에 0이 붙으면 +
1111 1111 -> 앞에 1이 붙으면 -
1의 2진수 = 0000 0001 -> 1
255의 2진수 = 1111 1111 -> -1
1은 0000 0001.
보수법
10진수의 10의 보수와 9의보수.
1. 9의 보수
연산을 했을 때 각자리수가 9가 되게 하는 수이다.
예를 들어서 371이라는 숫자가 있는데 371의 9의 보수는 다음과 같다.
3 7 1
+ 6 2 8
9 9 9
더셈해서 9가 되게 하는수 이것이 9의 보수!
371의 9의 보수는 628이다.
10의 보수는 얼마인가??
10의 보수는 9의 보수에서 +1을 해주면 된다.
따라서, 371의 10의 보수는 629가 된다.
2진수.
2진수에서는 1의 보수와 2의 보수가 존재한다. 1의 보수는 더해서 1이 나오게 하는 값이다
2진수는 1과 0 밖에 존재하지 않으므로 2진수의 1의 보수는 반대로 쓰기만 하면 더해서 1이나오게 하는 값이 나온다.
다시 말해서, 어떤 수가 있으면 반대로 쓰면 된다. 0이면 1, 1이면 0.
1 0 1
+ 0 1 0 -> 이것이 101의 1의 보수.
2의 보수 = 1의 보수 + 1
010 + 1은 011 이것이 2의 보수이다.
음수 찾기.
128 129 255 0 1
-128 -127 -126 -1 0 1 2 3 127
이것을 보고 이해해야 한다. 일단 가장쉬운 1과 -1관계.
8비트에서 2진수는 1은 0000 00001 이거의 1의 보수는
1111 1110이 된다. 여기에서 1을 더하여 2의 보수를 만들면 1111 1111이된다.
10진수로 변환하면 255가 된다. 255는 실제로 -1이된다.
1과 -1은 2의 보수 관계
따른 숫자도 마찬가지로 2의 보수관계에 놓여있다.
73과 -73
73 = 01001001
역으로 쓰면 10110110 여기서 +1하면
10110111 10진수 변환하면 183 하지만 183은 -73이다. 255 - 183 = 72 이것은 255로 부터 72만큼 떨어져 있다. 255가 -1이니 -72가 아니라 -73이 나온다. 이것을 증명하기 위해 역으로 보수법을 취해보자.
10110111을 1의 보수 01001000이다. 다시 1을 더하면 01001001이된다. 73과 동일한 숫자로 나온다. 73의 음수 -73은 서로 2의 보수관계이며 10진수로 183이된다.
이것을 이용하면 뺄셈이 가능하다. 기본적으로 컴퓨터는 뺄셈을 못한다.
그러나 위의 보수법으로 빼고자 하는 수를 음수로 만들면 가능하다. 예를 들어 3-2 =1
여기서 2를 -2로 고치면 된다.
0000 0010의 역수 1111 1101 +1 = 1111 1110 이것이 -2이다.
3의 2진수 0000 0011
0000 0011
+ 1111 1110
10000 0001이된다. 9자리가 된다.
앞에 1은 8비트에서 표현을 못하여 0000 0001이된다.
3-2 = 1과 같은 동일한 값이 나온다.
'2월 수업정리' 카테고리의 다른 글
2월 20일 수업정리 (0) | 2013.03.04 |
---|---|
2월 28일 수업정리 (0) | 2013.02.28 |
2월 27일 수업정리 (0) | 2013.02.27 |
2월 19일 수업정리 (0) | 2013.02.26 |
2월18일 수업정리 (0) | 2013.02.26 |