2014-10-22 3 views
0

부동 소수점 명령어를 사용하지 않고 부동 소수점 수 (IEEE 754 형식)에 2를 곱해야합니다.MIPS의 IEEE-754 부동 소수점 수를 곱하십시오.

내가 문제가되는 부분은 곱셈 후에 지수 부분을 고정하는 것입니다.

이것은 내가 가지고있는 것입니다.

단일 정밀도 부동 소수점 숫자는 레지스터 에 가정 $ t0의

sll $t1, $t0, 9  t1 holds fraction part 
sll $t2, $t0, 1 
srl $t2, $t2, 24  t2 holds exponent part 
srl $t3, $t0, 31  t3 holds the sign bit 

sll $t1, $t1, 1  multiply fraction by 2 
#do something to exponent in $t2 ## 

#now put it all back together 
sll $t3, $t3, 31  put sign bit in the 31nd bit position 
sll $t2, $t2, 23  put exponent in the 30-23 bit positions 
srl $t1, $t1, 9  put fraction in the 22-0 bit positions 

or  $t4, $t1, $t2 
or  $t4, $t4, $t3  t4 now holds the value of t0*2 

내가 2

답변

1

당신이있어 의해 분율을 곱한 경우 지수가 변화 할 방법을 이해 해달라고 틀린 일을 여기에서한다

sll $t1, $t1, 1  multiply fraction by 2 

IEEE-754 부동 소수점 가수 부분은 이전과 동일하므로 곱셈에 의해 2 단 기점이 우측으로 이동되면 mber의 값이 식

(-1)^sign * 1.mantissa * 2^exponent 

기반으로, 모든 비트는 그대로 남아있다. 2를 곱하려면, 당신은 내가 그냥 추출해야 2에 의해 $ T0를 곱하려는 경우 그래서이

addi $t2, $t2, 1 
+0

처럼해야 2 그래서

2*2^exp = 2^(exp+1) 때문으로 곱하지, 1 지수를 증가 지수 비트를 하나 추가? 그런 다음 $ t0에 새 지수를 다시 추가 하시겠습니까? – jean

+0

예. 하지만 NaN 또는 Inf와 같은 코너 케이스를 확인하십시오. –

+0

예, 지수 = 1111 1111 또는 0000 0000입니까? – jean

관련 문제