일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 컴퓨터과학개론
- 스프링
- 프로그래밍
- 기초코딩
- 자바
- 스프링 기초
- Elk
- spring
- 프로그래밍기초
- Git
- 자바프로그래밍
- 데이터베이스
- 이클립스
- 리눅스
- 제이쉘
- Java
- 초보코딩탈출
- github
- 클래스
- JAVA기초
- 자바 스프링
- 배열
- JShell
- 초보코딩
- 메소드
- 알고리즘
- 프로그래밍언어
- eclips
- 자바기초
- 코딩초보
- Today
- Total
키보드워리어
[디지털 논리회로] 디지털 논리회로 - 간소화,부울함수, X진수 변환 본문
안녕하세요 【키보드 워리어】
⌨🗡🧑
블로그 방문자 여러분, 안경닦이입니다.
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진수 101000111011은 10진수로 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입니다.