说说位运算符

一直对位移运算符比较混乱,想好好的总结一下位运算符的计算规律,现在就算做一个了断吧,全是个人之言,不保证正确无误,有错误请各位看客指出:

>>:右移运算符,右移一次就相当于除以2,因此a>>n就相当于a/2n ,如果a的初始值是奇数,可以先减一之后再进行剩下的运算。它的运算原理是:当操作数为正数时,高位以0填补;当为负数时,高位以1填补。

注:a经过位移运算之后,它自己本身的值也发生了变化,例如a=9,则经过a>>1之后,a=4

<<:左移运算符,和右移运算符一样,只不过移动的方向不一样。左移一次就相当于乘以2,无论正负,低位均以0填补。

注:位移运算符均以操作数的bit数为周期,举例来说,假设有int a=9,则a>>2a>>34的结果就是一样的,因为34232,刚好是a所占的位数,32位。

>>>:和>>基本上相同,唯一的区别就是进行>>运算时高位是以符号位来进行填充,而进行>>>运算的时候,高位则全部是用0来填充

最后补充一点,如何得到一个负数的补码?

-9为例,我们有两种不同的途径得到它的补码,为了方便起见,假设其只占8:

方法一:

步骤一:写出其绝对值的补码,即原码,得到00001001

步骤二:对其减一,于是得到00001000

步骤三:取反,得到11110111,就是-9的补码

方法二:

步骤一:求得该负数加1之后的绝对值,即得到8

步骤二:写出该绝对值的补码,得到00001000

步骤三:取反,得到11110111,与方法一的结果一样

另外,如果已知的是一个负数的补码,要你求它的值,例如让你求11110111表示哪个数值,我们可以首先求反再加一得到00001001,这个数就是所要求负数的绝对值,于是我们可以知道11110111代表的是-9

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值