C++中的位运算符

 /**********笔者鲁钝,不善言辞,以下内容均是当初课程笔记整理,相对简陋浅显,适合于新手教程,大牛勿见笑,若能助君一程,在下不胜感激!******/


众所周知我们的位运算符有&(按位与), |(按位或), ^(按位异或), ~(按位取反), >>(右移)和<<(左移)。

我们知道计算机中所有数据都是以二进制的形式储存的,而我们的位运算就是建立在这个的基础上。

下面我将分别介绍这几种位运算,其中重点介绍按位取反这种运算,笔者将根据自己的个人经验并结合实际例子将之阐述解释

1,&运算

&表示的意思,遵循的是全真即真,有假即假的原则,这与我们离散数学中的合取有异曲同工之妙。

例:

4 & 5 ?

要计算这题首先需要将它们转化为二进制的形式

1) Change them into binary digit

4    &   5   <==>    100   &   101

接下来按位比较

2)Bitwise comprison

1与1&运算仍为1,0与0&运算仍为0,0与1&运算为0,即结果为100

将结果转化为十进制

3)Change them into decimal digit

100的十进制形式为4,即4 & 5 == 4


2,| 运算

| 是 的意思,与数学中的 析取类似,运算规则为: 一真全真,同假为假。由于运算步骤与&运算雷同,在此不再赘述,只举例子,请读者自行理解。

4    |   5   <==>  100  |  101   <==>   101   <==>   5


3, ^运算

^是 异或的意思,异或这种运算是实现 逻辑加法的基础,其运算规则为: 两同为假,相异为真。

限于文章格式问题笔者无法详细为大家列举出异或的详细运算,其运算模式与逻辑加法相同,在此为大家特意整理出具体方法请移步https://jingyan.baidu.com/article/86112f135745432736978776.html。
同样给大家举个例子:
4  ^ 5  <==>  100  ^ 101  <==>  001  <==>  1


4,移位运算

<<和>>分别表示左移与右移,其实质是小数点的移动,同样是建立在二进制的基础上,下面举例:

<<左移运算
2  <<  3    //2的二进制是10,为了方便我们人为添加一个小数点 10.
此时的1与小数点之间相差一位,当我们左移三位时,1与小数点之间的距离增加至4,此时结果为 10000.
然后将之转为十进制形式得出结果16。

>>右移运算
方法类似,下面只举例:
64  >>  2  <==>  1000000.  <==> 10000.00   <==>   16

注意:

在C++中cout的情况如:
cout << 3;    // 此时的<<表示插入运算符,运算符重载了

对于重载的概念,简单来说就是同名函数或方法不同参数。
感兴趣的读者可移步百度,在次不再赘述。



5,~按位取反运算

此运算是笔者认为最头疼的运算,当时看的时候纠结了很久,查了很多资料最终整理出了自己的一套方法,下面就个人经验进行总结:


/**************************总结****************************/
 按位非运算的思想就是找到该数的补码进行十进制运算后取反得到
 对正数使用按位非运算:补码+1后符号取反
 对负数使用按位非运算:补码符号取反

/***********************注意*****************************/
 正数的原码,反码补码都是相同的
 负数进行反码和补码转换时符号位不动

例:

   ~7
  0 0000111 --> 0 0000111 --> 0 0000111 --> 1 0001000 --> -8
 
  ~-7
  1 0000111 --> 1 1111000 --> 1 1111001 --> 0 0000110 --> 6


本着求真务实的理念,我是十分希望能仔细罗列这部分,但担心想当初的我一样,看了太多脑子越乱,所以我用尽量简洁的语言归纳了这部分,

如果对于想要深入了解计算机或者程序语言的大牛,这些远远不够,笔者建议去找相关专业的书籍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值