[자바]/자바의 정석 - 3판

Chapter 02-2 진법

쿠릉쿠릉 쾅쾅 2021. 8. 25. 14:48
728x90

진법

  • 2진법, 8진법, 10진법, 16진법 있음
  • 8진수는 2진수 3자리를 한 자리로 표현할 수 있음
  • 16진수는 2진수 4자리를 한 자리로 표현할 수 있음

 

 

 

n비트로 표현할 수 있는 10진수

  • 값의 개수 : 2^n
  • 값의 범위 : 0 ~ 2^n -1 

 

참고) 워드(word)는 'CPU가 한 번에 처리할 수 있는 데이터의 크기'를 의미

32비트 cpu 에선 1워드 = 4바이트, 64비트 cpu에선 1워드= 8바이트임

 

 

 

실수의 진법변환

10진 소수점수를 2진 소수점수로 변환하는 방법

  1. 10진 소수에 2를 곱합
    • 0.625 * 2 = 1.25
  2. 위의 결과에서 소수부만 가져다가 다시 2를 곱함
    • 0.25 * 2 = 0.5
  3. 1, 2번 방식을 소수부가 0이 될 때까지 반복
    • 0.625   *  2    =    1.25
    • 0.25    *   2    =    0.5
    • 0.5      *   2    =    1.0
  4. 위 결과 정수부분만을 아래로 순서대로 적고 ' 0. ' 을 붙이면 된다
    • 0.625 (10진수) = 0.101 (2진수)

 

 

2진 소수점수를 10진 소수 점수로 변환하는 방법

  • 0.101 (2진수)  = { 1 * 2^(-1) } + { 0 * 2^(-2) } + { 1 * 2^(-3) }
                 =  0.625 (10진수)

 

 


 

보수

  • 덧셈 회로를 이용하여 뺄셈을 수행하기 위해 사용함
  • r진법에는 r의 보수와 r-1의 보수가 존재함
    • 2진법에는 2의 보수와 1의 보수가 존재
    • 10진법에는 10의 보수와 9의 보수가 존재
  • r 진법에서 r의 보수
    • A라는 수에 B라는 수를 더해서 각 자리마다 자리올림이 발생하고 해당 자리는 0이 될 때, B를 A에 대한 r의 보수라고 정의함 
      • ex) 10진법에서 33의 10의 보수는? 답) 67
      • ex) 2진법에서 10101의 2의 보수는? 답) 01011
  • r 진법에서 r-1의 보수
    • A라는 수에 B라는 수를 더한 결과값의 각 자리가 (r-1)이 될 때, B를 A에 대한 (r-1)의 보수라고 정의함
      • ex) 10진법에서 33의 9의 보수는? 답) 66
      • ex) 2진법에서 10101 의 1의 보수는? 답) 01010

 

 

10진 음의 정수를 2진수로 표현하기

  • 10진 음의 정수의 절대값을 2진수로 변환한 후  그 수의 2의 보수를 구함

 

 

 

 

 

보수를 이용한 뺄셈

 

1의 보수 뺄셈

  • 빼는 수의 1의 보수를 구한 다음 더함
  • 덧셈결과에 자리 올림이 생겼다면, 최하위 비트에 1을 더하고 자리올림된 것은 제외함
  • 덧셈 결과에 자리 올림이 생기지 않았다면, 연산 결과에 대해 1의 보수를 구한 후 '-' 부호를 붙임

 

1의 보수 뺄셈

 

 

 

2의 보수 뺄셈

  • 빼는 수의 2의 보수를 구하고 더함
  • 최상위비트 자리올림이 생겼다면, 자리올림을 제외한 나머지 부분이 연산 결과임
  • 최상위비트 자리올림이 안생겼다면, 연산결과의 2의 보수를 구한 후 '-' 부호를 붙임

 

2의 보수 뺄셈

728x90