Преобразование чисел с плавающей точкой в ​​целые числа без инструкций преобразования - PullRequest
0 голосов
/ 09 марта 2019

Я работаю над программой, которая должна преобразовывать введенное пользователем число с плавающей запятой в целое число, я заставил его работать, но только для чисел с плавающей запятой, у которых нет дробной части, которая превышает 2 ^ -1, чтоочевидно, 1/2.Это будет работать для чисел, таких как 75,5 или 2,5, но не для чисел, таких как 75,625.Мне нужно сохранить код в этом формате, но я не уверен, что я должен заставить программу сдвигаться влево и вправо (вокруг хэштегов), чтобы отменить дробную часть независимо от того, что является дробной частью.

.data
 Prompt: .asciiz "\n Please Input a value for the float N = "
 result1: .asciiz " The converted N is "
.text
 li $v0, 4 # system call code for Print String
 la $a0, Prompt # loads address of prompt into $a0
 syscall # print the message in Prompt
 li $v0, 6 # System call code for Read Float
 syscall # read whatever you input float as 
 mfc1 $t1, $f0 # Stores the float value into the $t1
 srl $t2, $t1, 23  # srl by 23 to leave out the biased exponent and store it 
 in $t2
 add $s3, $t2, -127 # Subtract 127 to get the exponent
 sll $t4, $t1, 9 # Shift left and right by 9 to remove the exponent
 srl $t5, $t4, 9 
 addi $t6, $t5, 8388608 # Add the implied bit (2^24)
 add $t7, $s3, 9 # Add 9 to the exponent value
 sllv $s4, $t6, $t7 # Shifts the implied bit to 2^32 (32nd bit)
 ###########################
 rol $s5, $t6, $t7 #rotate to the left by whatever the exponent + 9 is to 
 get 
 the integer part of the number to the first few bits
 sll $s5, $s5, 1
 srl $s5, $s5, 1 # sll and srl cancels out the fractional part #should be 
 1001011 #s5 is the newly converted integer
 ######################
 li $v0, 4 # Tells computer to get ready to print a .asciiz number
 la $a0, result1
 syscall
 li $v0, 1 # Tells computer to get ready to print the converted integer 
 number
 move $a0, $s5 # Moves the contents of $s5 to %a0 so it can be called
 syscall # Returns the integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...