原码 反码 换算工具 补码_计算机基础之原码,补码,反码

c0ceee74d319d81b1a780b9b7281519a.png

最近在复习C语言的基础,本科学的太水了,而且后期主要用Java写实验,C和C++好多精彩的东西都忘记了,突然看到原码,补码,反码的运算,看了看又没避免自己眼高手低的毛病,好多看着会,一看就不会了。

有一些很必要的知识点我看了尚硅谷韩老师的课件中这样写:

  1. 电子计算机技术全部采用二进制,也就是由0、1构成
  2. 在计算机中,二进制的最高位是符号位,0表示正数,1表示负数
  3. 正数的原码,反码,补码都是一样的。
  4. 负数的反码 = 原码符号位不变,其它位按位取反,即0→1,1→0
  5. 负数的补码 = 反码 + 1
  6. 0分为+0和-0,8位计算机中,
    1. +0的原码是00000000 -0的原码是10000000
    2. +0的反码是00000000 -0的反码是11111111
    3. +0和-0的补码均为00000000
  7. 在计算机的运算中,都是按照补码来运算的。
  8. 对于移位运算
    1. 算术左移 <<:符号位不变,低位补0
    2. 算术右移 >>:低位溢出,符号位不变,并且用符号位补充高位

下面以8位举几个例子

1>>2 → 0

1的原码、反码、补码:00000001,右移2位,低位2位01溢出,补充符号位0,最后结果为补码00000000,原码为00000000,10进制即为0

-1>>2 → -1

-1的原码:10000001,反码:11111110,补码:11111111,右移2位,低位2位11溢出,补充符号位1,最后结果为补码11111111,反码为11111110,原码为10000001,10进制即为-1

-1<<2 → -4

-1的原码:10000001,反码:11111110,补码:11111111,左移2位,符号位不变,低位补0,结果补码为:11111100,反码为:11111011,原码为:10000100,10进制即为-4

至于其他的运算法过程大概都是这样,如果不够熟练,可以在纸上写一写,总比糊弄过去强。暂时在书中看到的就这些,整理下来,以后在遇到其他的会再记录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值