FloatToInt purpose is to convert Float to int! :) anyway, there's
something strange going on here, which i'm abit confused...
.data
a word ?
b real4 234234124.234234
.code
fld b
call FloatToInt
; eax <--- now hold the result
+-------- should be 4!
|
and the result is: 234234128 <---- which is incorrect. how come?
this error occure because 234234124.234234 doesn't fit into real4?
(try and use the value above and see if you get the correct value).
but when i have:
.data
a word ?
b real4 34124.234234
.code
fld b
call FloatToInt
; eax <--- now hold the result
and the result is: 34124 <--- which is correct. why so?
note: i tested it with VC++ and they have the same problem...
int a ;
float b ;
b = 234234124.234234;
a = (int)b; <--- typecast float(b) to int(a)
i execute and debug that code in VC++ and the result is: 234234128
which is also incorrect. :( the last digit should be 4.
coud it be:
===============================================
1: there's something wrong with my FloatToInt codec
or
2: 234234124.234234 doesn't fit into real4
which one do you think is the cause? 1 or 2?
===============================================You are absolutely correct. There are only 24 bits of percission. Try this:
234234124 / 16 = 14639633 (in hex=DF6210)
23-bits are stored in the low bits of a REAL4, and the top bit is assumed to be set! Also note that we rounded up to the next interger. Next step:
14639633 * 16 = 234234128 (look familiar?)
The exponent in a REAL4 is like a shift count to be applied to the number - that's why I used power of two multiply/divide. I have a brighter light here if you still cannot see. ;)thanx for the reply.
about the bright light, i think i see it. (why wouldn't a person
see a ligh when it's BRIGHT??? silly :D )
rake, let me see your bright light (i want to see it nonetheless).
in your saying, are you refering to the SIGN bit???
give me your brigh light so i can make it even brighter!!
I'm very silly after a boring day at work. :) You could have found such an elementary answer as bright as you are? Don't you have documentation where you are at? Intel Architecture Software Developer's Manual Volume 1:Basic Architecture Section 7.4.1, combined with a little binary knowledge?
Okay, the (exponent - 127) is the shift count from the imaginary decimal point - which sits behind the imaginary set bit. :) The sign is nothing special. :)
1:8:23 = sign:exponent(shift+127):fraction
fraction always has an imaginary set bit in front. If the exponent & fraction are zero then the number is zero. I'm not so bright, I have the manual here. :Drake, my understanding of english isn't perfect(so is my grammar).
when you explain things to me, you have to keep it simple
or else i'll hunt you with more question.
"that's why I used power of two multiply/divide."
to me, that's like French you're speaking in. :) so i ask you you
to show me the light, so that i can make sure i'm on the same
boat as you.
in reality, fraction (i wouldn't say that. i would called rakesion :D )
are always thought (or imaginary as you stated). I believe i've
read chapter 1 of the Art of assembly 5 time! so no need for me
to explain it here. chapter 1 talks alot about binary (believe me,
once you read it more than once, you will memorize for LIFE!).
so, your answer above varify me that we're on the same boat (boy,
i'm scare..
vecna might attack us. he has a mask on...).
This message was edited by disease_2000, on 7/5/2001 11:32:18 PMYou are too funny! :D I knew I should have taken French in high school - never have used the Spanish. :) I'll try to keep it simple, but I am a complex American (my doctor keeps using the word 'pathology' when he tells them about my condition :))
Your English is very good. Try: Section 7.4.1 The more explainations the better, and the pictures aren't too bad either. (I like pictures) I think you can order these in French? (33) (1) 45717171 is their phone number - give 'em a call? :)
Maybe, I should have said, "I'm not so bright, I have the manuals here in my native tonge." I've had enough water for tonight, thank you - come to think of it - I've fell off the end of boat...