我敢肯定,我错过了一些东西。我使用此代码:在Java中获得(十进制)浮点数的IEEE 754(单精度)表示法
int bitsVal = Float.floatToIntBits(f);
String bitsString = Integer.toString(bitsVal, 2);
这似乎对正数工作正常。我的意思是,字符串必须用0填充以获得整个32位表示,但否则就没问题。
对于exampele为F = 2.085,我得到:
bitsString=100 0000 0000 0101 0111 0000 1010 0100
(我已经添加了自己的空间为清晰起见,他们是不是真的存在)
这里只有31一和零,因为有第一位是符号位,在这种情况下是0,所以如果我用0填充它,直到我得到32个元素为止。
也是一样F = 0.85,给出:
bitsString=11 1101 1010 1110 0001 0100 0111 1011
这是很好的再次,由于2个第一缺失位为0(再次,为标志),并再次0,因为的二进制表示归一化指数为01111011.
但是对于负值,我会得到非常奇怪的值。根据我的理解,如果f的给定正值给出0xxxxxx的IEEE 754(单精度)表示形式(0,后面是31位,用于规格化指数和尾数),则负f将返回相同的序列,除了第一位上,其改变从0到1
但随着上面的代码,适用于f左= -0.85我得到
bitsString = -100 0010 0101 0001 1110 1011 1000 0101
其中,保存为“ - ”(负字符),其应该是一个“1”(我猜)具有奇怪的值。所以我的问题是,有没有办法,使用Java API来获得给定浮点数的IEEE 754(单精度)位序列(除了滚动我自己的,我已经做到了)?
感谢名单