키보드워리어

[디지털 논리회로] 디지털 논리회로 - 간소화,부울함수, X진수 변환 본문

Universirty/3-1

[디지털 논리회로] 디지털 논리회로 - 간소화,부울함수, X진수 변환

꽉 쥔 주먹속에 안경닦이 2023. 7. 1. 23:32
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 안경닦이입니다.

 

10진수를 2진수로

 

예시) 27.25

 

먼저 정수부분소수부분을 나누어서 계산합니다.

 

27을 이진수로 변환하기 위해서 27 2로 나누고 몫이 0이 될 때까지, 나머지를 구하고 나머지를 일렬로 나열합니다.

- 27 2로 나눈 몫은 13, 나머지는 1이 됩니다. (27 = 13*2 + 1)

- 13 2로 나눈 몫은 6, 나머지는 1입니다. (13 = 6*2 + 1)

- 6 2로 나눈 몫은 3, 나머지는 0입니다. (6 = 3*2 + 0)

- 3 2로 나눈 몫은 1, 나머지는 1입니다. (3 = 1*2 + 1)

- 1 2로 나눈 몫은 0 나머지는 1입니다. (1 = 0*2 + 1)

 

정수부분은 11011입니다.

 

이제 소수부분을 해결합시다.

 

소수 부분을 이진수로 변환하는 방법은 소수 부분을 2로 곱한 후, 그 결과가 1보다 크거나 같으면 그 결과에서 1을 뺀 값을 이진수에 추가합니다. 결과가 1보다 작으면 그대로 이진수에 추가합니다. 이것을 소수분이 채워질 때까지 반복해야 합니다.

 

0.25 2를 곱하면 0.5로 소수부분에 첫번째 자리는 0을 기록합니다.

다시 한 번 0.5 2곱하면 1 1을 기록합니다. 1기록합니다.

 

소수부분은 0.01입니다.

 

따라서 10진수 27.25 2진수로 11011.01 입니다.

 

2진수를 X진수로

2진수를 X진수로 바꾸고자 한다면 먼저 10진수로 바꾸는것이 편합니다.

 

 

2진수 (101000111011)가 있다면 4진수로 바꿔볼까요?

먼저 2진수를 10진수로 변환 해보겠습니다.

각 자리 수의 가중치를 두어서 계산 해야 합니다. 각 자리 수는 오른쪽에서 0부터 시작해서 11개입니다.

 

부여된 자리번호를 2의 거듭제곱해서 각 자리의 1또는 0과 곱하면 아래와 같습니다.

 

 

(1 * 2^11) + (0 * 2^10) + (1 * 2^9) + (0 * 2^8) + (0 * 2^7) + (0 * 2^6) + (1 * 2^5) + (1 * 2^4) +

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

 

이걸 계산하면 (2 11승은 2048) + 0 + (2 9 512) + 0 + 0 + 0 + (2 5 32) + (2 4 16) + (2 3 8) + 0 + (2 1 2) + (2 0 1),

 

2048+512+32+16+8+2+1 2619가 나옵니다.

 

그럼 이제 2619라는 10진수 값을 4진수로 나타내야 하니,

 

2619 4로 나누고 나머지를 역순으로 나열하겠습니다.

 

2619 4로 나누면 4* 654 = 2616 나머지는 3

654 4로 나누면 4*163 나머지는 2

163 4로 나누면 4*40 나머지는 3

40 4로 나누면 4*10 나머지는 0

10 4로 나누면 4*2 나머지는 2

2 4로 나눌 수가 없어요. 나머지는 2

 

역순으로 나열하면 220323이 답입니다.

 

2진수 (101000111011)를 이번엔 8진수로 바꿔볼까요?

 

2619값을 8로 나누고 나머지를 역순으로 나열하겠습니다.

2619 8로 나누면 8*327 나머지는 3

327 8로 나누면 8*40 나머지는 7

40 8로나누면 8*5 나머지는 0

5 8로 나눌수 없으니 나머지는 5

따라서 답은 2진수 101000111011 8진수로 변환하면 5073입니다.

 

2진수 (101000111011)를 이번엔 16진수로 바꿔볼까요?

 

먼저 2진수를 10진수로 변환하고 10진수를 16진수로 변환하겠습니다.

*(16진수는 10부터 15까지 A ~ F로 표현합니다.

 

2진수 10100011101110진수로 2619입니다. *(2번문제 참고)

2619 16으로 나누면 16*163 나머지는 11 (B로 표기)

163 16으로 나누면 16*10 나머지는 3

10 16으로 나눌 수 없으니 나머지는 10 (A로 표기)

 

따라서 이를 역순으로 나열하면 A3B가 답입니다.

 

부울함수 F=(X+XY+Y)(X+!XYZ) 대수적인 방법으로 간소화.

논리연산으로 AND, OR, NOT연산이 있습니다.

AND: 점으로 표시 또는 이를 생략합니다.

OR: 연산은 덧셈 기호로 (+) 표시합니다.

NOT: 변수 위에 줄을 그어서 표시합니다.

*편의상 앞에 알파벳 앞에 !(느낌표)를 붙여서 쓰겠습니다. 예) !X

 

왼쪽 항부터 보면 (X+XY+X)인데

이것은 결합법칙으로 X+XY = X, Y+XY = Y, (X+Y)가 됩니다. 그래서 현재는

(X+Y)(X+!XYZ)입니다.

 

이후 분배법칙을 사용합니다.

왼쪽 X Y (X+!XYZ)를 붙여줍니다. 그러면 아래와 같은 기호가 됩니다

(X+!XYZ)X+ (X+!XYZ)Y

 

 

왼쪽 항을 분배법칙해서 고쳐보면

XX+X!XYZ + (X+!XYZ)Y인데요. XX=X입니다. 따라서

X+X!XYZ+(X+!XYZ)Y 이구요.

 

보원법칙에 따라 X!X = 0이 됩니다.

X+0+(X+!XYZ)Y가 됩니다.

 

X+0 = X가 되는 법칙에 따라서 0이 사라지고 남은건

X+(X+!XYZ)Y가 됩니다. 이번엔 Y를 분배법칙하면

 

X+YX+Y!XYZ 가 됩니다. YY = Y이므로

X+XY+Y!XZ 입니다.

 

X+XY = X이므로

X+XY+Y!XZ

X+Y!XZ가 됩니다.

 

X+Y!XZ에서 not연산자 X+Y!XZ X+YZ가 되므로

부울함수F=(X+XY+Y)(X+!XYZ)를 대수적인 방법으로 간소화한 답은

X+YZ입니다.

 
728x90