IT수업/JAVA PART1

IT 수업 10주차 (3) JAVA 진수

워제하 2024. 2. 28. 09:34

 

● 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진수(참고문헌: '디지털 논리회로 이해', 오창환 저, 한국학술정보(주))