double型数据存储

double型占64位(0~63)

其中最高位63bit表示符号:0正1负

62~52bit:11位的指数位

52~0bit:52位的数据位

 

举例说明:-64.446263

  1. 共8字节,63bit:1; 
  2. 62~52bit:   64=100 000; 所以指数应该是7,这里使用隐藏位技术,第一位1隐藏,所以指数位=6;同时指数位基数为1023所以最终为1029=100 0000 0101;
  3. 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);

 

posted @ 2016-07-13 14:21  Dkma像疯子一样战斗  阅读(337)  评论(0编辑  收藏  举报