注意符号数的打印显示

请看此段代码:

Code

 

   我的本意是:内存浮点数都是以IEEE754的形式存储的,现在将以IEEE754的形式来查看数据。因此,我先将浮点数据地址取出来,并转换成字符形的,然后就从最后一个地址(第7个),逐渐向前取数据,里面的数据就是IEEE754存储的数据。

    但是,结果却多出来一些f,比如上面运行的结果为:0 0 0 20 5f ffffffa0  2 ffffffc2。而-10000000000IEEE754的表示为:C2 02 A0 5F 20 00 00 00,那么那些意外的f是怎么出来的呢?

    我观察到出现f的地方都是字节的最高位为1的地方,那么就是说这是与符号相关的,因此,对于符号位最高为1的,都当成了负数来处理,而负数在x%的显示中都是以32位的形式显示的,因此,在使用必须要小心符号。对于以上程序作如下略微的改变的,就可以得到想要的结果:

 

Code

 

显示结果为: 0 0 0 20 5f a0  2 c2

 

posted on 2008-12-13 23:29  冰碎星  阅读(373)  评论(0编辑  收藏  举报