猿问

.NET 内存中的浮点表示

根据Jon Skeet 的浮动文章,将符号位设置为 1,将其他所有内容设置为 0 仍然给出数字 0。我不能 100% 确定符号位是第一个位(如文章中所述)还是第一个位最后一点(如文档中所述)。无论如何,我都尝试了:


byte[] buf = new byte[4];

buf[0] = 0b10000000;

buf[1] = 0b00000000;

buf[2] = 0b00000000;

buf[3] = 0b00000000;

float f = BitConverter.ToSingle(buf, 0); // 1,793662E-43


buf[0] = 0b00000000;

buf[1] = 0b00000000;

buf[2] = 0b00000000;

buf[3] = 0b00000001;

float g = BitConverter.ToSingle(buf, 0); // 2,350989E-38

而且两者都不会导致0。我做错了什么?将所有位设置为 0 的完整性检查有效。


神不在的星期二
浏览 121回答 1
1回答

慕标琳琳

感谢用户 EOF,我意识到 .NET 字节没有存储在(对于非位黑客)直观的字节序中。buf[3] = 0b10000000;成功了。
随时随地看视频慕课网APP
我要回答