공부/논리설계2011. 6. 22. 19:29


10진수 소수를 n진수로 변환하는 문제 
http://sunkyu.tistory.com/71338
왜 이렇게 되는지 이해가 안되었는데 시프트 연산을 생각해보면 이해가 되었다.
2진법으로 바꿀때 2로 나눈다는 것은 오른쪽 시프트 연산이다. 이진수의 맨 끝자리를 버리겠단 뜻이다. 그래서 2로 나누었을 때 발생하는 나머지는 2진수로 바꾸었을 때 2^0 자리의 수가 되겠다. 계속 2로 나눠주면서 그 다음 자리 수를 구할 수 있다.
소수일 때는 2를 곱해주는데 이는 왼쪽 시프트 연산이다. 이진수의 맨 앞자리를 버린다. 즉 소수에 2를 곱했을 때 소수점을 넘어가는 숫자가 2^-1의 자리의 수가 된다. 계속 2를 곱해주면 그 다음 자리 숫자를 구할 수 있다.


2의 보수에 대한 알기쉬운 설명
http://maanu.egloos.com/3356542

r-1의 보수와 r의 보수의 차이
r-1의 보수는 0을 표현 하는 방법이 2개 있다. +0, -0
r의 보수는 0을 표현하는 방법이 1개. 0
예를 들면 r이 10이고 자리수가 2개일 때(n=2) +0은 0이고, -0은 99-0 = 99이다.

보수를 이용한 빼기 연산
M - N을 구한다고 할 때

N을 r의 보수로 바꿔주고 더해주면
M + (r^n - N) = M - N + r^n

i) M>=N일 경우
r^n (케리)가 있기 때문에 버리면 M - N 만 남는다.

ii) M<N일 경우
결과는 -(N-M)이 나와야 겠다.
M-N + r^n을 r^n - (N-M) 으로 바꿀 수 있고 이는 N-M의 r의 보수이다.
이 수를 다시 r의 보수를 취하면 N-M을 구할 수 있다. r^n - (r^n - (N-M)) = N-M
이 값에 '-'를 붙여주면 값이 구해진다. -(N-M)

Signed binary numbers가 필요한 이유
컴퓨터에서 -를 표현해야 될 때 컴퓨터는 모든 것을 0과 1로 표현해야 하기 때문에 부호를 나타내는 비트가 하나 필요하다.
그래서 0이면 양수 1이면 음수 이렇게 표현할 수 있다.


코드
소통하기 위해서 사용. BCD, Excess-3, Gray, ASCII 등이 있음.
Gray가 유용할 때는 디지털에서 0111에서 1000으로 바뀔 때 비트가 4개가 바뀌기 때문에 에러가 발생할 가능성이 높다. 그래서 비트를 하나씩만 바꾸면서 그런 경우를 최소화할 수 있다.
코드에 대한 재미있는 이야기 
http://maanu.egloos.com/3262125

'공부 > 논리설계' 카테고리의 다른 글

4장 Combinational Logic  (0) 2011.06.28
3장 Gate-Level Minimization  (0) 2011.06.26
2장 Boolean Algebra and Logic gate  (0) 2011.06.24


Posted by skyjumps