디지털 회로개론

Lecture 3(10진수, 2진수, Compliment)

kangyuseok 2021. 10. 5. 23:59
728x90

10진수

0, 1, 2, 3, 4, 5, 6, 7, 8, 9

23 = (2 * 10^1) + (3 * 10^0)

 

85.56

whole number : 85

fraction number : 56

 

ex) 568.23 = (5 * 10^2) + (6 * 10^1) + (8 * 10^0) + (2 * 10^-1) + (3 * 10^-2)

              = 500 + 60 + 8 + 0.2 + 0.03

              = 568.23


2진수

1 , 0

0110 = (0 * 2^3) + (1 * 2^2) + (1 * 2^1) + (0 * 2^0)

       = 0 + 4 + 2 + 0

       = 6

비트 가 n개 일때, 2진수로 만들 수 있는 가장 큰 수는 2^n -1 입니다.

ex) 1111은 bit가 4이고 1111은 10진수로 15입니다. 15 = 2^4 -1 입니다.

 

MSB / LSB

MSB는 2진수의 수중에 맨 왼쪽에 있는 수입니다.

LSB는 2진수의 수중에 맨 오른쪽에 있는 수입니다.

ex) 100 = MSB : 1(2^2) / LSB : 0(2^0)

ex) 1101.1011 

positive / negative

MSB in a binary fractional number : 1101.1011

1101.1011 = 8+ 4 + 0 + 1 + 0.5 + 0 + 0.125 + 0.0625 

              = 13.6875

 

ex) 2진수 0.1011 을 10진수로 바꾸시오.

whole number은 0이므로 무시하고 fraction number (1 * 2^-1) + (1 * 2^-3) + (1 * 2^-4)                                                                                                        = 0.5 + 0.125 + 0.0625                                                                  = 0.6875


Decimal numbers -> Binary(10진수 -> 2진수 변환)

1) Sum-of-Weights Method

1) whole number

주어진 10진수 수에서 2의 거듭제곱 수를 찾아내는 것입니다.

ex) 9 = 8 + 1 = (1 * 2^3) + (0 * 2^2) + (0 * 2^1) + (1 * 2^0) = 1001

ex) 12 = 8 + 4 = (1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (0 * 2^0) = 1100

 

2) fraction number

ex) 0.75 = 0.5 + 0.25 = (1 * 2^-1) + (1 * 2^-2) = 0.11(binary)

2) Repeated Division-by-2 Method

1) whole number

주어진 10진수의 수를 2로 계속해서 나누는 방법입니다.

나머지가 1이 되었을때, 멈춥니다.

ex) 12/2 = 6 ....0(LSB)

     6/2 = 3 ......0

     3/2 = 1(MSB) ......1

따라서 12 = 1100(binary) 입니다.

 

2) fraction number

whole number와 다르게 2를 계속 곱해줍니다.

곱하면 whole number 부분은 Carry라고 하며 2진수 자리를 차지합니다.

또 2를 곱할때는 Carry부분을 빼주고 곱해줍니다.

예를 들어 곱했을때 1.25가 나오면 Carry 부분은 1이고 다시 2를 곱할때는 0.25를 곱해줍니다.

곱하는 수가 0이 되면 멈춥니다.

ex) 0.625 => 0.625 * 2 = 1(Carry).25 ......1(Carry)(MSB)

                 0.25 * 2 = 0(Carry).5 ............0(Carry)

                 0.5 * 2 = 1(Carry).0 ...............1(Carry)(LSB)

따라서 0.625 = 0.101(binary)


Binary Arithmetic(2진수 계산)

1) Binary Addition(2진수 덧셈)

<기본 연산>

0 + 0 = 0 (Sum : 0, Carry : 0)

0 + 1 = 1 (Sum : 1, Carry : 0)

1 + 0 = 1 (Sum : 1, Carry : 0)

1 + 1 = 10 (Sum : 0, Carry : 1)

 

<Carry 가 있을때 연산) 빨간색은 Carry bit

1 + 0 + 0 = 01 (Sum : 1, Carry : 0)

1 + 0 + 1 = 10 (Sum : 0, Carry : 1)

1 + 1 + 0 = 10 (Sum : 0, Carry : 1)

1 + 1 + 1 = 11 (Sum : 1, Carry : 1)

 

ex) 011 + 001 = 100

빨간색은 Carry bit입니다. ① -> ② -> ③ 순으로 진행됩니다.

 

ex) 111 + 011= 1010

빨간색은 Carry bit입니다. ① -> ② -> ③ 순으로 진행됩니다.


2)Binary Subtraction(2진수 뺄셈)

<기본 연산>

0 - 0 = 0 (Difference : 0, Borrow : 0)

1 - 1 = 0 (Difference : 0, Borrow : 0)

1 - 0 = 1 (Difference : 1, Borrow : 0)

10 - 1 = 1 (Difference : 1, Borrow : 1)

Borrow란 Carry랑 비슷한 개념입니다. 예를 들어 0 - 1 이라고 할때 Borrow가 생겨납니다. 

ex) 101 - 011 = 10

빨간색은 Borrow 입니다.


3) Binary Multiplication(2진수 곱셈)

<기본 연산>

0 * 0 = 0 (Product : 0)

0 * 1 = 0 (Product : 0)

1 * 0 = 0 (Product : 0)

1 * 1 = 0 (Product : 1)

일반적인 10진법 곱셈과 똑같습니다.

ex) 101 * 111 = 100011

ex) 1011 * 101 = 110111


4) Binary Division(2진수 나눗셈)

10진수 나눗셈과 똑같습니다.

ex) 111 / 10 = 11 ... 1


Compliments of Binary Numbers(2진수 보수)

<1's Compliment>

모든 2진수를 보수 처리합니다.

0을 1로 바꾸고 1을 0으로 바꿉니다.

ex) 10110010 -> 01001101

 

<2's Compliment>

1's Compliment 의 LSB에다가 1을 더해주는 것입니다.

ex) 10111101 -> 01000010(1's Compliment) -> 01000011(2's Compliment)

ex) 10110010 -> 01001101(1's Compliment) -> 01001110(2's Compliment)


Signed Numbers(신호 숫자)

1) Sign - Magnitude Form

MSB가 0이면 양수

          1이면 음수 

MSB 이외에 bit들은 The magnitude bit라고 합니다.

ex) 20(Decimal) = 00010100

   -20(Decimal) = 10010100 

빨간색 부분은 MSB 이고 파란색 부분은 magnitude 부분입니다.

여기서 Magnitude부분은 양수나 음수나 상관없이 MSB부분만 다르고 나머지 부분은 모두 같습니다.

 

2) 1's Compliment

양수는 sign-magnitude와 동일하고 음수는 양수에 1's Compliment 를 취해줍니다.

ex) 20 = 00010100

   -20 = 11101011

 

3) 2's Compliment

양수는 sign-magnitude와 동일하고 음수는 양수에 2's Compliment를 취해줍니다.

ex) 20 = 00010100

   -20 = 11101100