注意符号数的打印显示
请看此段代码:
Code
我的本意是:内存浮点数都是以IEEE754的形式存储的,现在将以IEEE754的形式来查看数据。因此,我先将浮点数据地址取出来,并转换成字符形的,然后就从最后一个地址(第7个),逐渐向前取数据,里面的数据就是IEEE754存储的数据。
但是,结果却多出来一些f,比如上面运行的结果为:0 0 0 20 5f ffffffa0 2 ffffffc2。而-10000000000的IEEE754的表示为:C2 02 A0 5F 20 00 00 00,那么那些意外的f是怎么出来的呢?
我观察到出现f的地方都是字节的最高位为1的地方,那么就是说这是与符号相关的,因此,对于符号位最高为1的,都当成了负数来处理,而负数在x%的显示中都是以32位的形式显示的,因此,在使用必须要小心符号。对于以上程序作如下略微的改变的,就可以得到想要的结果:
Code
显示结果为: 0 0 0 20 5f a0 2 c2