관리 메뉴

합법적사기꾼지망생

Ch1 binary numbers 본문

B1_디지털시스템 공학(velilog)

Ch1 binary numbers

평범한 민석이 2019. 10. 8. 10:46

진수의 종류, 2^n진수들, 덧셈뺄셈

디지털 정보는 주로 2진수로 곧잘 나타나는데 2진수의 종류, 그외의 진수 8, 16진수 10진수들에 대해 알아보자.

주로 A진수의 일반항은 다음과 같다. 예를들면 다음과 같다.

Decimal number = 10 진수, Octal number = 8진수, Hexadecimal = 16진수, Binary number = 2진수

참고로 2^10은 1024로 1000과 비슷해서 주로 정보의 크기를 나타내는데 그 내용은 다음과 같다.

## 중요한사실 : 2진수 4진수 8진수 16진수는 주로 서로 변용하라고 자주 문제로 출제되는데 다 2진수로 먼저바꾸고 하면된다.

예를들어 8진수를 16진수로 바꾸라고하면 8진수=>2진수=> 16진수 로 바꾸면 용의하게 바꿀 수 있다.

예시문제)

tip) 10진수를 2진수로 변환하는 법 (8,16,4, 3진수 등등 나머지 진수들도 마찬가지이다.)

tip) 2진수의 덧셈 뺄셈 곱셈 나눗셈은 10진수 방법과 똑같다. 다만 넘어가는 것(Carry)의 크기가 다를 뿐이다.

Binary Coded Decimal의 정의, 덧셈뺄셈, overflow

이제 Binary Coded Decimal 즉 BCD Number에 대해서 배워보자 4bit 2진수 숫자로 10진수 숫자 1자리 1자리를 2진수 4개로 표현하는 것이다. 예를 들어 14를 BCD로 바꾸면 14=> 1+ 4=> 0001 + 0100 => 14(10진수) = 00010100(BCD)

tip) BCD의 덧셈

 

마치 2진수의 덧셈처럼 그냥 BCD를 더하면 된다. 하지만 BCD는 1010(=10)이상을 표현할 수 없다. 그런데 더해서 1010(2진수)이상의 수가 나오면 어떻게 해야할까(이런 말도안되는 상황을 overflow라고 한다.) 바로 그냥 0110을 더하면 된다.

over flow of adding of BCD

보수(Complement)

정보를 처리할때 맨앞에 신호(MostSignificantDigit=MSD)가 0이면 양수 1이면 음수를 나타낸다. 즉 Signbit로 이용된다. 이때 우리는 음수를 나타내는 방법이 3가지가 존재한다. Signed magnifitude, 1's complement, 2's complement 이다.

이에 대해 알아보기전에 보수(complement)에 대해 알아보자

r진수(base-r system)에대해서는 2가지의 보수개념이 존재한다. 보수는 음수를 나타내기위해서 이용된다.

r's complement와 (r-1)'scomplement 이다.

그때 보수의 정의는 다음과 같다.

N=base-r(r진수)인 양의 정수

(r-1)'s complement of N = r^n - 1 - N

r's complement of N = the (r-1)'s complement of N + 1

(n=신호의 자릿수)

ex. r=2

2진수의 보수는 1's complement와 2's complement 가 있다.

0110(=5)의 1's complement = 2^4(10진수)-1-5(10진수) = 10000-1-0110 (2진수)

= 1111-0110

= 1001

이땐 1001이 -5를

반면에 2's 보수 경우는 어떨까?

0110의 2's complement = 1001 + 1 = 1010

1010이 -5를 나타낸다.

이제 4bit base-2의 Signed magnifitude, 1's complement, 2's complement를 모두 알아보자

signed magnifitude는 그냥 3bit에 sign bit 만 붙은 경우이다.

1's complement 는 0을 1로 1을 0으로 반전시킨 경우이다.

2's complement 는 그냥 1의 보수에서 1을 더한 경우이다.

2의 보수의 경우에는 곂치는 부분이 없지만 1의보수와 sign magnitude는 0에서 곂친다. 그래서 2의보수가 나타낼수 있는 숫자의 범위가 더 많다.

그 범위는 다음과 같다.

그래서 2의보수를 주로 사용하고 이것을 아래의 사진을 통해 숙지하자

2의 보수의 덧셈 을 보자 (뺄셈은 빼는 수의 보수를 빼지는수에 더하면 된다.)

*참고. 산수 상태를 나타내는 bit들은 Carry Overflow Negative Sum가 있는데 Carry는 덧셈할대 한 차수 올라가는 수를 의미한다.

2의보수같은 경우 덧셈을 했을때 Overflow가 정말 잘발생한다. 양수와 음수를 더할때는 문제가 없는데 양수끼리 음수끼리 더할때 범위를 초과하는 over flow가 발생한다.(양수끼리 음수끼리 더한다고 항상 overflow가 되는건 아니다. 오해말길)

이때 Overflow의 발생 필요충족조건은 Cin⊕Coutof MSB = 1 이다.

*참고 : 회로를 나타내는 언어의 종류(아스키 등등)

 

Comments