永发信息网

分析程序运算结果 main() { short int i=-4; printf("\n﹪d,﹪u,﹪x,﹪o \n",i,i,i,i); }

答案:2  悬赏:80  手机版
解决时间 2021-03-28 01:56
  • 提问者网友:绫月
  • 2021-03-27 06:43
分析程序运算结果 main() { short int i=-4; printf("\n﹪d,﹪u,﹪x,﹪o \n",i,i,i,i); }
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-03-27 07:04
在C中用数值中在存储单元的最左边的第一位来表示数的正负,1来代表负号,0表示正号;
而求一个负数的补码的方法是:
1,取绝对值 得4
2,求其二进制形式 得100
3,取反 (100实际上在存储单元中是表示为0000 0000 0000 0100,取反就是把0换成1,1换成0)得1111 1111 1111 1011
4,再加1 得其补码1111 1111 1111 1100
所以,4的原码是0000 0000 0000 0100所以他的反码是 1111 1111 1111 1011 而他的补码则是他的反码加1 得-4反码 1111 1111 1111 1100 这个数转换成十进制是65532。
注意 是正数的时候 就没有必要这样了 他的补码是 他的原码追问谢谢您的回答O(∩_∩)O谢谢
“在C中用数值中在存储单元的最左边的第一位来表示数的正负,1来代表负号,0表示正号;”
这句话是怎么体现的呢?这里是指看补码的最左边的第一位吗?追答不是,是看原码比如-4的原码1000 0000 0000 0100
全部回答
  • 1楼网友:纵马山川剑自提
  • 2021-03-27 08:21
(1)补码是数据在计算机内部存放的一种格式,使用补码格式主要好处是可以将符号位和其它位统一处理,同时,减法也可按加法来处理(只如同代数,1-1 表示成1+(-1))。另外,两个用补码表示的数相加时,如果(符号位)有进位,则进位被舍弃。
(2)正数的补码就是它自己,负数的补码是对其自己逐位取反,但符号位(最高位)除外;然后整个数加1。
你可以复合一下你举的例子,不难理解上面2点
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯