根据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 的完整性检查有效。
慕标琳琳
相关分类