2진수, 8진수, 16진수

ㅅㅇㄱ·2024년 9월 27일

CS

목록 보기
5/19

진법변환

2진법

  • 자릿수당 2의 제곱으로 표현(0이면 없음 1이면 있음)
    • ex.10010⇒24+21=16+2=182^4+2^1=16+2=18

8진법

  • 자릿수당 8의 제곱으로 표현
    • ex.121⇒(821)+(812)+(801)=64+16+1=81(8^2*1)+(8^1*2)+(8^0*1)=64+16+1=81

16진법

  • 자릿수당 16의 제곱으로 표현(9를 초과하면 알파벳으로 표현 10=A, 11=B.…. 15=F)
    • ex.B27⇒(16211)+(1612)+(1607)=2,816+32+7=2855(16^2*11)+(16^1*2)+(16^0*7)=2,816+32+7=2855

2진수의 소수변환

  • 정수부분을 변환후 소수점밑의 수들은 2를 곱하여 정수부로 올라온 수를 적는다
  • 이 과정을 0이될 때까지 0이되지 않는다면 근삿값을 구할 떄까지 반복한다.

EX)

0.6875*2 = ’1’.3750 — 0.’1’

0.3750*2 = ’0’.7500 — 0.1’0’

0.7500*2 = ’1’.5000 — 0.10’1’

0.5000*2 = ’1’.0000 — 0.101’1’

0.68759(10)=0.1011(2)0.68759(10) = 0.1011(2)

고정 소수점

  • 고정 소수점: 컴퓨터에서 정수를 표현할 때 사용하는 형식으로 2bytes, 4bytes 등으로 표현한다
    • 고정 소수점에서는 소수점이 특정위체 고정되어있다고 가정하여 표현한다.
    • ex. 19를 2bytes 고정소수점으로 표현하면
    • 0000000000010011 가 된다.
      • 첫 bit는 부호bit로 0은 양수, 1은 음수를 표현한다
      • 1이 아닌부분은 전부 0으로 채운다

부동 소수점

컴퓨터에서 주로 실수를 표현할 때 사용하는 형식으로 4bytes 배정도, 8bytes 배정도 등으로 표현한다

지수형태의 표현

실수를 다음과 같이 표현한다

213.45=21345102=0.21345103213.45 = 21345*10^{-2} = 0.21345*10^3

  • 부호부, 지수부, 가수부(소수부)로 구분한다.
    • 부호부는 최상위 비트로 첫 1bit이며 양수는 0, 음수는 1로 표현한다
    • 지수부는 바이어스된 지수를 2진수로 표시한다
    • 가수부(소수부)는 소수점아래 10진 유효숫자를 2진수로 변환해 표시한다
    • 이때 소수점은 지수부와 가수부 사이에 있는것으로 가정한다

바이어스된 지수

지수부는 부호를 표현하지 않고 바이어스를 사용해 지수의 양수와 음수를 표현한다.

즉 8bits로 지수부를 나타낸다면 수의 값은 0~255이므로 127이 기준이 된다.

따라서 지수부가 127이면 0승 128이면 1승, 129이면 2승이 되고, 126이면 -1승, 125면 -2승을 나타낸다.

EX) 지수부는 8bits

123.23=1111011.01123.23 = 1111011.01

1111011.01=1.11101101261111011.01 = 1.11101101*2^6

지수부:127(기준)+6=133지수부: 127(기준)+6=133

EX.부동소수점) -123.35를 4bytes로 표현

  1. 10진수 → 2진수
  • 정수 : 123 = 1111011
  • 소수 : 0.25 = 0.01
  • 123.25(10) = 1111011.01(2)
  1. 정규화 하기
  • 1111011.01=1.11101101261111011.01 = 1.11101101*2^6
  1. 부호비트, 지수부, 가수부 구하기
  • 부호비트 : 음수이므로 1
  • 지수부 : 127(바이어스값)+6=133, 133 = 100000101
  • 가수부 : 정규화에서 정수1를 제외한 값인 11101101
  1. 4bytes 부동 소수점 데이터 형식으로 표현
  • 1 100000101 1110110100000000000000
  • 1100 0010 1111 0110 1000 0000 0000 0000(4bits씩 끊음)

2진수↔8진수↔16진수

2진수와 8진수,16진수의 변환은 2진수를 각각 3자리, 4자리씩 묶어 계산한다

EX)

10110101 ⇒ 10/110/101

10/110/101 ⇒ 265

10110101(2)=265(8)10110101(2) = 265(8)

10110101 ⇒ 1011/0101

1011/0101 ⇒ B5

10110101(2)=B5(16)10110101(2) = B5(16)

2진수의 연산

덧셈

자릿수마다 덧셈을 하고 그값이 1을 넘으면 다음자리로 보낸다.

ex) 1011+0101=10000

뺄셈

1의 보수 / 2의 보수

컴퓨터는 덧셈으로 처리해야 하기에 보수를 사용한다

  • 1의보수: 0을 1로 1은 0으로
  • 2의 보수: 그거에 +1
  • ex) 1001의 1의보수와 2의보수
    • 1의보수 0110, 2의 보수 0111
  • 1의 보수에 의한 뺄셈
    1. 피감수(뺌을 당하는 수)에 1의 보수를 취한다
    2. 감수와 피감수를 더한다
    3. 자리를 넘어간 수는 더한다(결과값에 1의 보수를 취하지 않는다)
    4. 자리를 넘어가지 않는다면 결과값에 1의 보수를 취하고 -부호를 붙인다
  • 2의 보수에 의한 뺄셈
    1. 피감수에 2의 보수를 취한다
    2. 감수와 피감수를 더한다
    3. 자리를 넘어가는 수는 버린다(이경우 2의 보수를 취하지 않는다
    4. 자리를 넘어가지 않으면 이의 보수를 취하고 -부호를 붙인다

곱셈

  1. 승수의 최하위 자리부터 승수가 1이면 피승수를 더하고 그렇지 않으면 더하지 않는다
  2. 이때 승수의 자릿수에 따라 결과값의 자리수도 커진다
  3. 모든 결과값을 더한다

나눗셈

  1. 피제수에서 제수를 더 이상 뺄 수 없을 때까지 반복한다
  2. 뺄 수 있으면 몫은 1, 아니면 몫은 0이 된다

0개의 댓글