永发信息网

求教下面是怎么算的:char c1=3,c2=7; char c3=~c1^c2<<2; printf("%d",c3); 解是-32

答案:2  悬赏:40  手机版
解决时间 2021-02-24 21:16
  • 提问者网友:我是女神我骄傲
  • 2021-02-24 10:34
求教下面是怎么算的:char c1=3,c2=7; char c3=~c1^c2<<2; printf("%d",c3); 解是-32
最佳答案
  • 五星知识达人网友:底特律间谍
  • 2021-02-24 11:06
2
按照优先级,可以写成
c3 = (~c1)^(c2<<2)
= (~00000011) ^ (00000111<<2)
= 11111100 ^ 00011100
= 11100000

而11100000是16进制的0xe0,如果用%x的形式打印出来,因为要把11100000当作8bit的有符号数来看待,那么就需要把11100000当作有符号数的补码来看,计算一下它作为补码的时候所表示的负数如下,就是要把11100000当作8bit的无符号数来看待结果就是e0。
如果用%d的形式打印出来:
正数补码表示的有符号数 = 补码本身
负数补码表示的有符号数 = 负的(补码除符号位外的其他比特位取反 + 1)
所以c3=~c1^c2<&lt
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-02-24 11:20
你说呢...
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯