보편적인 2진수의 곱셈, 2진수의 나눗셈, BCD(Binary-Coded Decimal)
보편적인 2진수의 곱셈

10진수랑 똑같은 방식으로 곱셈
- 10진수로 변환해서 곱하고 2진수로 변환하는게 빠를걸?

10진수로 변환해서 부호 고려해서 곱하고, 2진수로 변환
2진수의 나눗셈

으로 나누는 것은 right shift
일반적인 2진수 나눗셈은 10진수로 변환해서 몫과 나머지 구하기
BCD(binary-coded decimal)

바이너리로 인코딩한 십진수

10진수의 각 자리(0~9)를 4비트를 이용해 비트 패턴으로 표현
- 중에 10개만 사용
unpacked:
- 10진수 한 자리가 1바이트를 사용
- 1바이트 중에서 4비트 사용
- 4비트에서도 6개 값은 나올 수 없음 packed:
- 10진수 두 자리가 1바이트를 사용
BCD 음수

packed BCD를 가정
- 가장 오른쪽 비트 포함 4비트를 부호를 위해 사용
- 위 예에서는
1100이 양수,1101이 음수라고 미리 약속
- 위 예에서는

비트 낭비
가산기 회로에서 바로 처리할 수 없음
- 추가적인 로직 필요
- 추가적인 로직이 필요하니 속도도 느려짐
정수의 정확도

정수는 100% 정확도
- 표현할 수 있는 범위 안의 정수는 오차 없이 정확
복습 퀴즈
(Q1) 다음 2진수들을 곱한 결과는 무엇인가요? 1010(2) * 1100(2) (부호없음)
- 10진수로 피연산자를 변환
- 120을 2진수로 변환
(Q2) 다음 2진수들을 곱한 결과는 무엇인가요? 1001(2) * 1011(2) (부호 있음. 2의 보수 사용)
- 10진수로 피연산자를 변환
- 부호 비트가 1이라서 음수
- 각 피연산자의 2의보수를 구하면
- ,
- 양수임을 표현하기 위해 가장 왼쪽에 0을 붙여주면
(Q3) 다음 2진수들을 나눈 결과는 무엇인가요? 1111(2) / 0011(2) (부호없음)
- 10진수로 피연산자를 변환
- 15 / 3
- 몫은 5, 나머지 0
- 5를 2진수로 변환하면
- 양수임을 표현하기 위해 가장 왼쪽에 0을 붙이면
(Q4) 다음 2진수들을 나눈 결과는 무엇인가요? 1100(2) / 1110(2) (부호 있음. 2의 보수 사용)
- 10진수로 피연산자를 변환
- 부호 비트가 1이라서 음수
- 각 피연산자의 2의보수를 구하면
- ,
- 2
- 2을 2진수로 변환하면
- 양수임을 표현하기 위해 가장 왼쪽에 0을 붙이면