2010-02-26 12 views
0

기본적으로 나는이 부호없는 8 비트 이진수를하고 난 큰 어떤 알아 부울 논리를 사용할 필요가 내가 내 인생 곳을 알아낼 수 없습니다 스타트. 논리 게이트를 사용하여 ...부울 논리 연산자 이상 (논리 게이트)

Obivously 나는 각 비트를 분석하고 큰 어느 알아 내야하지만 난 그것을 모두 함께 방법을 가지고 있습니까?

내가 x와 y를했고, X < Y (x와 y는 8 비트 부호없는 이진수있다) 경우에 true를 반환하고 싶어 말. 이 일을 어떻게 하죠?

나는 최상위 비트를 가지고 연구 결과에 대해 생각하지만, 그들은 모두 같은 어떤 경우?

누구나 아이디어가 있습니까?

+0

숙제 태그가 필요합니까? –

답변

2

가장 중요한 비트가있는 것을 찾는 것에 대해 생각했지만 둘 다 동일하면 어떻게 될까요?

차이가있을 때까지 "최상위 비트"부터 "최하위 비트"까지 진행합니다. 첫 번째 비트가 "1"로 설정된 번호가 가장 큽니다. 이를 구현하기

은 상기 SR의 "OUT"비트의 각 숫자 및 비교기 "시프트 레지스터"를 사용.

+0

다음 중 하나가 다른 것보다 큰지 확인하는 재귀 함수를 어떻게 래치합니까? – Cheetah

+0

아주 단순한 상태 머신에서는 일반적인 "레지스터"(이 경우에는 "래치"가 아님)를 사용합니다. – jldupont

0

당신은 거기에있어. 예, 가장 중요한 비트부터 시작하십시오. 둘 다 같으면 다음 비트 (가장 중요한 비트쪽으로 오른쪽으로 이동)로 이동하십시오. 설정되어있는 비트 (그리고 다른 비트가 아님)를 발견하면 더 큰 숫자입니다.

0

실제로, 당신은 올바른 길을 가고 있습니다. 먼저 가장 중요한 비트를 비교합니다. 일치하지 않으면 이미 결과를 출력 할 수 있습니다. 값이 같으면 두 번째 최상위 비트를 비교 한 결과를 출력합니다. 그리고 최하위 비트까지. 어떤 방식으로 재귀. 결과에서 약간의 차이가있는 마지막 것을 제외하고 각 비트에 대해 동일한 게이트 구성을 반복하게됩니다 (그 이후의 비트가 없으므로).

0

하나의 높은 비트가 "큰"(예 : 그것은 하나이고 다른 하나는 0입니다) 번호가 하나 더 큰 후보다.

동일한 경우 다음 비트에서 동일한 테스트를 수행하십시오.

그래서 당신이 C와 같은 의사 코드 같은 것을 (우리가 공의 위치에서 가장 중요한에 배열의 비트가 척) 원하는 :

// true iff x > y 
(x[0] == 1 && y[0] == 0) 
|| (
    (y[0] == x[0]) 
    && (the entire expression all over again, but with [n+1] instead of [n]) 
) 

베이스 케이스를 (예 : 때 테스트 할 비트가 더 이상 없습니다.)> 또는> => 원하는지 여부에 따라 false 또는 true를 사용하십시오.