负数右移问题

负数右移问题

老师好,为什么a=-3右移时您用的1110 1000进行右移计算,这个数是怎么来的我不明白,谢谢老师

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
大白老师 2025-11-27 19:21:29

左移和右移动是用补码来移位的!  我们这里是 a = a << 3
-3的原码:1000 0011
         反码:1111   1100
         补码:1111   1101

//补码: 1111 1101

//<< 3

//补码: 1110 1000 ,a为char,最高位为1,表示负数

//取反: 1001 0111

//+1  : 1001 1000 ==>-0x18==>-24


  • 提问者 追梦者皆凡人 #1

    https://img1.sycdn.imooc.com/climg/868a8a69092958ad07140280.jpg

    老师,是不是在计算a=-3右移时您用的1110 1000,这个数是上一次a=-3补码左移3位后的得数啊,也就是-3补码左移3位后的结果?

    2025-11-28 16:12:02
  • 中年猿叔 回复 提问者 追梦者皆凡人 #2

    理解没问题,是的哦

    2025-12-04 23:25:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
物联网/嵌入式全能工程师(提薪优选)
  • 参与学习       525    人
  • 提交作业       305    份

行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,0基础友好入行/转行 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师