.NET浮点表示在内存中

问题描述 投票:1回答:1

根据Jon Skeet's float article,将符号位设置为1,其他所有设置为0仍然给出数字0.我不是100%确定符号位是第一位(如文章中所述)还是最后一位(如docs中所述。无论如何,我尝试了两个:

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的完整性检查有效。

c# .net floating-point
1个回答
1
投票

感谢用户EOF,我意识到.NET字节没有存储在(对于非bit-hackers)直观的endianess中。 buf[3] = 0b10000000;做到了这一点。

© www.soinside.com 2019 - 2024. All rights reserved.