For an interactive explanation of how this conversion process works, I made a webapp that basically summarizes this video: float-visualiz... Here's the source code on GitHub for those interested: github.com/ste...
Finally some good video. I searched the yt for floating point explanation and kinda got hang of it but noone cared to explain it so closely but you helped me man, thanks.
I think one reason for using the bias instead of two's complement is to maintain the order of the numbers with respect to their value. So, the binary inequality x > y is valid.
For those who wanted to watch the video mentioned at 2:12 referencing bias, here it is: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-tx-M_rqhuUA.html
Clear explanation; couldn't really grasp it during CDA no matter how much I tried, because of the whole thing being just PowerPoints. Also, bonus points for using Pilot pens, I have the same kind! And even more for providing source code!
Excellent! Very good explanation! And i don't understand the complaints about the formula used in the end.It's logical! If you understand what's going on in there then this formula seems obvious to you! Anyway...Thanks!
Can you explain the significance of -1^s? S may only be 0 or 1, and -1^0 and -1^1 both equate to -1. Due to this, I am getting the correct answer for every number I try, but it is always a negative.
Thank you, this was very helpful! But for the sake of curiosity/masochism, then why does 0x00000000 = 0.0? [0] [00000000] [00000000000000000000000] Sign: -1^0 = 1 Exp: (0 - 127) = -127 M: (1 + 0.0) = 1.0 (1) * (1) * (2^-127) = 5.8775e-39, or 0.0000000000000000000000000000000000000058775 Which is extremely close to zero, but still not quite. If it is simply rounded to 0.0 at some point because the number is ridiculously small, i'd understand, but then when I enter 0x00000001 into any online converter, it comes out as 1.4013e-45 which is somehow even smaller. Is it just a rule that 0x00000000 is interpreted as 0.0?
it's just a rule, it's a special case, at least that was what I was thought. also, for instance, minus infinity is represented by sign = 1, exp = 255 and M = 0
It's a special case. When all bits in the exponent are 0, the formula changes and now Exp = 1-bias (127 for 32 bits) and M = 0+mantissa. As you can see, with this 0x0 = 0.0. Another special case is when all bits in the exponent are 1, where you have 3 options: -If the sign bit is 0 and all bits in the mantissa are 0, then the value is infinity -If the sign bit is 1 and all the bits in the mantissa are 0, then the value is minus infinity -If the sign bit is 0 or 1 and any bits in the mantissa are not 0, then the "value" is NaN (Not a number)
Well actually the reason for not representing the exponent using 2's complement is not unknown. IEEE did it so that it was easier to sort. In a biased expression. You can just look at the exponent and say whether a number is greater than or less than another number. If it was in a 2's complement format then a quick sorting would take more time since you had to convert the 2's complement and then compare
Right, it was unknown to *me*-I wasn't trying to imply that they did it for literally no reason, that would be silly. I appreciate the explanation though, hopefully others will find it useful :)
why would you want answer in that form as oppossed to -8.2152949e-34 OR 0.00000000000000000000000000000000002152949 ? Any other reason besides convenience?
Don't you need to do a two's complement to the number first? As far as I understand, the decimal representation of a negative binary number, using two's complement, is -(two's complement(the number)).
@@stevenpetryk6869 It was used before IEEE format on IBM 360 computers. The layout is different for where to find the sign bit, and bais is 128 but their might be some other trick to getting a floating point number out. I was looking for the manual handwritten way of understanding the math. en.wikipedia.org/wiki/Microsoft_Binary_Format
Highest is 128, lowest is -127. If you think about it rationally, since the exponent is 8 bits, you know that if it's unsigned 1111 1111 gives you 255, and 0000 0000 gives you 0. Since the bias is -127, you just subtract that from whatever you have in the exponent. so the highest possible number is 255-127= 128, and the lowest possible is 0-127= -127. Does that help?
@@Antchovi It does! Thank you a lot, my teacher have told the wrong number to our class. I "confronted" him with it and he did explain once more with the right numbers. After the first time the class was: i`m quit.
hey bro.. Why the mantissan value which is m = 2 power of(-4) + 2 power of (-8) = suddenly become 0.06640625 can you tell me the details to get that value. Thanks in advance
Alfian rs its in base 2 and need to convert to base 10, first digit after 0. is 2 to the power -1, fourth digit2 to the power -4, eighth digit 2 to the power -8
That's literally how numbers work, bro. -- Like... 2^(-4) + 2^(-8) == 0.06640625. -- Is your question about how negative exponents work? -- 'cause ... I mean... just use a calculator? -- If you really need to do it in your head, instead of using negative exponents (i.e. each bit having a value of 2^(-1), 2^(-2), etc..) -- just assign each bit fractional power of two values; that is: 1/2, 1/4, 1/8, 1/16 and so on (it's a bit more readable IMHO). -- So, in this case, you're just adding 1/16 + 1/256 == 0.06640625.
what if I have to write the number as X*10^Y instead of M*2^E as you have written in the end? Can you please answer asap because I have an exam tomorrow!
please not to add the brackets when solving so instead of writting -1^s you should write (-1)^s because -1^s = -1 in case s is 0 or but the (-1)^s= 0 when the s is 0 and -1 when s is one!!!!
Nah. -- I mean... maybe? ... but irrelevant... -- Bottom line is they cranked this shit out in the 50s and 60s, and two's complement hadn't won the war yet on signed number representation. At least they were consistent... like, the mantissa is also biased (by 1, as he explains, though with different language...) -- Bottom line is: when all you have a hammer, every problem looks like a nail. :)
+BCGJohnny because if you have studied binary representations you would know that in biased representation for n-bits(this case 8) 00000000(binary) maps to -(n^2) -1 and other goes upward. Since you want the real value u have to convert. For example, if your exponent u get a value for 0000000( normal binary) u get 0(decimal) but basically in biased representation it is -127(decimal)
It's called "Excess-127", it's an alternative binary encoding for signed numbers; basically when he says to subtract 127, he's just explaining how to interpret these kinds of values as decimal numbers. More info: en.wikipedia.org/wiki/Signed_number_representations#Offset_binary en.wikipedia.org/wiki/Offset_binary#Excess-127