c++位运算

一:简介

1 位逻辑运算符:

  & (位   “与”)  and
  ^  (位   “异或”)
  |   (位    “或”)   or
  ~  (位   “取反”)

2 移位运算符:

  <<(左移)
  >>(右移)

优先级

位“与”、位“或”和位“异或”运算符都是双目运算符,其结合性都是从左向右的,优先级高于逻辑运算符,低于比较运算符,且从高到低依次为&、^、|

四:反码,补码

   反码和补码的目的就是为了解决负数的问题
   在计算机内,定点数有3种表示法:原码、反码和补码
   所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

  有原码就可以了,为什么还需要反码和补码?

反码是用来算补码的,原码和补码都是用在CPU的基本运算里的,比如数据类型是short:

计算5 - 2,并由于实际上CPU没有实现减法电路(注:计算机的硬件结构中只有加法器,所以大部分的运算都必须最终转换为加法,原码没有办法做减法,而在我们使用的汇编、C等其他高级语言中使用的都是原码,原码转换成补码都是在计算机的最底层进行的)。原码计算是 5+(-2)

0101

+1010

——-

1111

=-7?显然出错

所以不管正数还是负数,都使用补码来表示(正数原码和补码是一样的),

2的补码是1110,然后用5补 + 2补
、、 0101

  • 1110
    ——
    0011

=3,正确

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值