永发信息网

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

答案:3  悬赏:40  手机版
解决时间 2021-01-26 05:39
main( )
{int a=100,b=-1;
printf ("a=%d,%x,%o,%u\n",a,a,a,a);
printf ("b=%d,%x,%o,%u\n",b,b,b,b);}
运行结果:
a=100,64,144,100
b=-1,ffff,177777,65535

如果b是其他数如-2那该怎么算啊,结果会是多少啊
最佳答案
一、-1在计算机中以补码形式存储,在16位的编译系统中,-1的补码是1111111111111111;在32位的编译系统中,-1的补码是11111111111111111111111111111111;根据运行结果,你是情况属于16编译系统;
二、-1的补码1111111111111111以无符号整数%u输出就是65535。即(65535)10=(1111111111111111)2。
全部回答
取反加一,因为1的二进制码是:0000 0000 0000 0001,取反:你好! -1二进制表示为10000000000000001,负数用反码表示为
你这个问题非常有意义。 虽然我们都知道浮点数的格式定义在IEEE 754,我们可以换算出你定义的值。但是你这里打印的却不是我们换算出来的值,说明这样打印的方法有问题。 可以做以下试验证明:比如你定义3个一样的浮点数,float a, b ,c; a = b = c = 9.0; 理论上编码方式一样,打印出来就应该一样(无论值是什么)。可是用你的方法打印出来的结果是不一样的!!!哈哈! 具体原因我也不清楚,一直想在内存里面实际看看,最近工作忙,一直没有对比过。我怀疑是地址选择有些问题。也许用 printf("%x %x %x\n", *((unsigned int *) &a), *((unsigned int *) &b), *((unsigned int *) &c)); 打印可以解决问题。你可以试试看。或者用调试工具吊起来实际看看。 . 希望能够帮助你 ^_^ 也希望能够选为最佳答案!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
北京现代直营店地址在什么地方,想过去办事
河南许昌市内摄像头违章拍照有没有全国联网?
克隆除了能克隆出动物和植物还能克隆出哪些?
农村集体山场承包合同不到期续签合同合法吗
没收到美国A5卡怎么办?
请问一般餐饮业的会计上班时间是几点到几点,
如何做好建筑工地材料管理
1.It was believed that things would get wo
UIC大学(北京师范大学-香港浸会大学联合国际
梦缘花艺地址在哪,我要去那里办事
风行汽贸(环市街道建设三路113号精文汽车城内
成语断章取义的意思是什么啊?有知道释义的请
失败并不可怕,可怕的是你失去了面对失败的勇
改虚拟内存有什么好处和后果
如何比较共价化合物键长
推荐资讯
糯米吃多了会便秘吗
为什么连接不到路由器
在哪里可以看星际传奇4百度不是写2015年上映
白事奠字用钱摆,给我发个图片
蒙牛袋装牛奶多少一袋毫升?(不是纸袋的那种
老婆和别的男人微信,有说有笑的
得几日,回宴洋人,其中一道热汤刚刚煮沸,浮有
永州至桂林的动车每小时多少公里
成语呼天号地的意思是什么啊?有知道释义的请
寻找一个电脑单机游戏 一个小卡通在三维方块
电脑出现没有注册类别点击叉号自动黑屏是怎么
溶剂质量分数是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?