double型占64位(0~63)
其中最高位63bit表示符号:0正1负
62~52bit:11位的指数位
52~0bit:52位的数据位
举例说明:-64.446263
- 共8字节,63bit:1;
- 62~52bit: 64=100 000; 所以指数应该是7,这里使用隐藏位技术,第一位1隐藏,所以指数位=6;同时指数位基数为1023所以最终为1029=100 0000 0101;
- 52~0:前6位应该是00 0000(64=100 0000 隐藏最高位1);剩下46位表示0.446263
使用十六进制表示: 0x c0 00 50 ......
实际存储为高位字节在最右边。
char型转成double型在C++中可以使用memcpy函数:
char temp[8] = { 37,-3,-23,-110,-113,-36,80,-64 }; double d=0; memcpy(&d, temp, 8);