永发信息网

简单的c语言问题,int a=13,表达式~a<<2等于多少 具体怎么算的

答案:2  悬赏:60  手机版
解决时间 2021-11-14 03:19
  • 提问者网友:椧運幽默
  • 2021-11-13 11:31
简单的c语言问题,int a=13,表达式~a<<2等于多少 具体怎么算的
最佳答案
  • 五星知识达人网友:逐風
  • 2021-11-13 11:56
我以前也没怎么搞明白,顺便自己研究了下,大家共同进步哈!
(int占4字节的情况计算出得结果是一样的)
1.方法
先转换成对应的2进制(int型在计算机中是4字节,这里以2字节位例,具体占自己数看计算机)
2.具体步骤
00000000 00001101(13对应的2进制)
11111111 11110010 (取反)
11111111 11001000 (左移2位,这个是计算机中存储的真实内容)
3.关于计算机的存储(补码):
在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。

因为上述结果首位为1,所以是个负数。他的原码(即真实值)是首位不变,其他位取反再加1

取反:
10000000 00110111
加1:
10000000 00111000(左边1是符号位,1表示为负,111000转换成10进制就是-56)
所以答案是-56
(我觉得补码的原因,因为有符号位。1000 和0000那是表示+0和-0,计算时会引起混乱)
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-11-13 12:57
13取反:13取反:
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯