IT 수업 10주차 (3) JAVA 진수
● 10진수 -> 2진수
10진수 2진수
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
● 비트
1bit : 2^1 = 2(0~1)
2bit : 2^2 = 4(0~3)
3bit : 2^3 = 8(0~7)
4bit : 2^4 = 16(0~15)
5bit : 2^5 = 32(0~31)
6bit : 2^6 = 64(0~63)
7bit : 2^7 = 128(0~127)
8bit : 2^8 = 256(0~255)
9bit : 2^9 = 512(0~511)
10bit: 2^19 =1024(0~1023)
1 1 1 1 1 1 1 1
* * * * * * * *
2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
128 64 32 16 8 4 2 1
● 2진수 - > 10진수
10101100 = 172
10011010 = 198
01101001 = 105
10010010 = 146
● 10진수 -> 2진수
192 -> 11000000
224 -> 11100000
252 -> 11111100
12 -> 00001100
15 -> 00001111
- 0 :8진수를 의미하는 접두사
- 0x:16진수를 의미하는 접두사
● 코드 이쁘게 정리하기 : ctrl + shift + f
< 실행화면 >
● 음수
- 컴퓨터(CPU)는 구조상 덧셈처리를 할 수 있다.(o)
- 컴퓨터(CPU)는 구조상 뺄셈처리를 할 수 있다.(x)
- 컴퓨터로 뺄셈결과를 확인 할 수 있다(o).
- 보수개념 도입 뺄셈요청시
- 음수를 지원하는 자료형에만 가능 (short는 음수지원 o, char는 음수 지원 x)
7-3 = 4
7+7 = 4
77-32 = 45
77+68 = 45
● 음수를 나타낼 때는 양수의 0과 1을 반대로 표시(1의 보수) 한 뒤 1을 더하면 된다. => 2의 보수
00000101 = 5
11111010 (1의보수)
1
+11111011 = -5 (2의보수)
------------------------------
00000000 = 0
( 5의 2진법과 -5의 2진법을 더하면 8비트를 넘어서 100000000 이 되므로 앞의 1은 버리게 되므로 0이 된다. )
● 8비트 범위 (음수있을 때)
( 8비트의 맨 앞자리는 부호를 나타내므로 00000000은 양수, 10000000은 음수를 나타낸다. )
00000000 = 0
00000001 = 1
00000010 = 2
00000011 = 3
...
01111111 = 127
10000000 = -128
10000001 = -128+1 = -127
10000010 = -128+2 = -126
10000011 = -128+3 = -125
...
11111111 = -128+127 = -1
00000001 = 1
< 문제 >
음수값임을 고려하여 풉니다
● 10 진수 -> 2진수
111 -> 01101111
-111 -> 10010001
96 -> 01100000
-96 -> 10100000
31 -> 00011111
-31 -> 11100001
● 2진수 -> 10진수
10101111 -> -128 + 32 + 15 = -81
00110101 -> 32+16+4+1 = 53
11001100 -> -128+64+8+4 = -52
10101010 -> -128+32+8+2 = -86
출처 : 10진수, 2진수, 8진수, 16진수(참고문헌: '디지털 논리회로 이해', 오창환 저, 한국학술정보(주))