求解下列C语言程序运算结果中b中最后的数65535是怎么算出来的,还有-1的存储形式怎么是1111111111111111?

[复制链接]
查看11 | 回复4 | 2011-2-18 17:04:19 | 显示全部楼层 |阅读模式
一、-1在计算机中以补码形式存储,在16位的编译系统中,-1的补码是1111111111111111;在32位的编译系统中,-1的补码是11111111111111111111111111111111;根据运行结果,你是情况属于16编译系统;二、-1的补码1111111111111111以无符号整数%u输出就是65535。即(65535)10=(1111111111111111)2。...
回复

使用道具 举报

千问 | 2011-2-18 17:04:19 | 显示全部楼层
你这个问题非常有意义。虽然我们都知道浮点数的格式定义在IEEE 754,我们可以换算出你定义的值。但是你这里打印的却不是我们换算出来的值,说明这样打印的方法有问题。可以做以下试验证明:比如你定义3个一样的浮点数,float a, b ,c; a = b = c = 9.0;理论上编码方式一样,打印出来就应该一样(无论值是什么)。可是用...
回复

使用道具 举报

千问 | 2011-2-18 17:04:19 | 显示全部楼层
取反加一,因为1的二进制码是:0000 0000 0000 0001,取反:1111 1111 1111 1110,加一:1111 1111 1111 1111,这就是-1的补码了,也就是-1的二进制表示。又如-2,首先2的二进制是0000 0000 0000 0010,取反1111 1111 1111 1101,加一:1111 1111 111...
回复

使用道具 举报

千问 | 2011-2-18 17:04:19 | 显示全部楼层
-1二进制表示为10000000000000001,负数用反码表示为1111111111111111%u无符号整数,范围是0-65535,所以1111111111111111就是65535...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行