컴퓨터 구조 02 : 진법 변환, 부호비트 방식, 보수법, Pack/Unpack 연산

728x90

진법과 진법 변환 / 부호비트 방식 / 보수법/ Pack Unpack 연산

 

진법과 진법 변환


• 디지털 정보 단위
– 1nibble = 4bit – 1byte = 8bit = 한 문자(character) – 영어, 공백은 1byte로 1문자 , 한글은 2byte필요
– 1워드 : 특정 CPU에서 취급하는 명령어나 데이터의 길이에 해당하는
비트 수, 워드 길이는 8,16,32,64등 8의 배수가 가능

 

 

• 2진법 : 전기 신호 0, 1로 표현
• 8진법 : 0~7까지 8가지 기호로 표현
• 10진법 : 0~9까지 10가지 기호로 표현
• 16진법 : 0~9,A,B,C,D,E,F까지 16가지 기호로 표현

 

 

10진수를 2진수로 변환하는 법

 

2진수를 10진수로 변환하는 법

 

8, 16진수를 2진수로 변환하는 법

 

 

 


부호비트 방식


• 컴퓨터는 이진법을 사용하므로 최상위 비트를 부호표기를 위해 남겨두는 방
식을 채택했다. • 8bit 자료의 경우 양수 1은 0000 0001, 음수는 1000 0001(부호가 있음
이 비트로 표현된 것) • ex) 1100 1010 = 2^6 + 2^3 + 2^1 = 74 -> -74


• 그러나 이 방식은 0일때 +0과 -0이 두 개 존재하게 되고,(0000 0000과
1000 0000) 양수와 음수간 연산이 어렵다는 단점이 있다.

 

 


보수


• 각 자리의 숫자의 합이 어느 일정한 수가 되게 하는 수. 컴퓨터에서 뺄셈을 하기위해 사용. 

• 컴퓨터에서는 덧셈을 담당하는 가산기만 이용하므롤 뺄셈은 덧셈으로 형식을 변환해서 계산해야 함. a-b -> a+(-b)


• 각 진법의 보수에는 같은 수의 보수법과, 같은수 -1의 보수법이 존재. 

• 십진수 7의 10의 보수는 7+x=10이 되어야 하므로 x=3
• 십진수 7의 9의 보수는 7+x=9가 되어야 하므로 x=2
• 따라서 n진수의 n의 보수 = n-1의 보수 + 1

 

 

 

1의 보수와 2의 보수 (부호비트 방식 혼용)


컴퓨터는 2진법을 사용하므로 2진법의 경우를 알아보자. 

 

1의 보수법
2진수의 1의 보수법은 1과 0을 거꾸로 뒤집은 수라고 생각하자. 

2진수 1111 1011의 1의 보수 : 0000 0100
ex) 1100 1010 의 1의 보수를 10진수로 나타내기. 부호 제외하면 011 0101이므로 -53이된다. 

단점 : 1111 1111의 경우 1진 보수는 부호 제외 000 0000이므로 크기가 0인 000 0000과 1111 1111이 두 가지가 존재하게 되어버린다. 

 

2의 보수법
앞에서 n진수의 n의 보수 = n-1의 보수 + 1라고 했으니 1의 보수를 구하고 +1을 해주면 된다. 

따라서 2진수 1111 1011의 2의 보수 : 0000 0101
장점 : 0이 한 가지만 존재한다.

 

 

 

1의 보수와 2의 보수(2) (부호비트 방식 혼용)


• 처음 주어졌던 1111 1011에다가 2의 보수를 덧셈 하면 이런
값이 나온다. 

  1111 1011 <이진법이므로 1+1은 10이되어서 다음 자리로 넘어간다. • 0000 0101
  0000 0101

+-------------
1 0000 0000

 

여기서 제일 높은 자리수 1을 버리면 뺄셈 연산이 가능해진다. 

1111 1011은 10진수로 251이고, 0000 0101은 251의 2의 보수였다. 

두 개를 더하고 8비트 영역을 벗어난 최고 자리 숫자 1을 빼면 0이 된다는 사실을 알 수 있다. 

이것이 바로 컴퓨터에서 보수법을 이용한 뺄샘 방법이다.

 

 

 

1의 보수 뺄셈법


1) 빼는 수의 1의 보수 구하고 더한다. 

2) 덧셈하다 자리 올림 생기면 최하위 비트에 1더하고 자리 올림한 것은 제외한다. 

3) 덧셈 결과에 자리 올림 없으면 연산 결과의 1의 보수를 구하고 -부호를 붙인다.

 

10011에서 자리 올림이 생겼으므로 최하위 비트에 1더하면 10100이된다. 여기서 자리올림한 최상위 비트 1을 제거하면 0100

 

 

덧셈 결과 자리 올림이 없으므로 1011의 1의보수는 0100, 부호를 붙이면 -0100

 

 

2의 보수 뺄셈법 (부호비트 방식 혼용)


• ex) 8-5를 2의보수법으로 계산. 

 

• 1) -5의 2의 보수 구하기.

    5는 이진법으로 0000 0101이므로 1의보수는 1111 1010
    여기서 1더하면 2의 보수이므로 1111 1011이된다.

 

• 2) 앞의 숫자와 뒤의 숫자의 2의 보수를 더한다.

     1111 1011 >> -5의 2의 보수
  + 0000 1000 >> 십진수 8의 이진수

---------------------
  1 0000 0011


• 3) 8bit 범위 넘는 제일 높은 자리수 1을 제외하고 10진수로 나타낸다.

    0000 0011이므로 10진수로 표현하면 3.

    따라서 8-5=3

 

 

 


Pack Unpack 연산

 

Pack 연산


• 4비트로 10진수 1자리를 표현하면 최하위 4비트는 부호로 사용한다. 

• 양수 부호를 1100, 음수 부호를 1101로 표현. 

• 부호 없는 정수 표현에서는 최하위 4비트를 1111로 표현. 

• ex) 1234 : 0000 0001 0010 0011 0100 1100
      -1234 : 0000 0001 0010 0011 0100 1101

 

컴퓨터 내부적 연산에 사용. 입출력 불가능

 

 

 

Unpacked 연산


• 1바이트에 1개 정수 표현. 

• 상위 4비트는 무조건 1111을 표현하는 Zone 영역
• 하위 4비트는 크기 나타냄. 

• 최하위 1바이트의 Zone영역은 부호를 표현. 양수는 1100, 음수는 1101, 부호없는 양수는 1111
• ex) 1234 : 1111 0001 1111 0010 1111 0011 1100 0100
      -1234 : 1111 0001 1111 0010 1111 0011 1101 0100


• 자료 입출력에 사용, 연산 불가

• 연산 할때는 팩 10진법 형식으로 변환시킨 후, 출력 할때는 다시 언팩 10진수로 변환시킨다.

• 처리 시간 많이 소요, 기억 공간 낭비 초래. 주기억장치에 기억될 때 사용되는 형식.

728x90