ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++位运算符(与,或,异或,取反,左移,右移)

2022-01-29 19:02:31  阅读:194  来源: 互联网

标签:右移 0100 0000 0011 取反 一位 运算符


与[ & ]:同为1时,结果为1

3 & 4
3(0000 0011)
4(0000 0100)
-------------
0(0000 0000)

或[ | ]:同为0时,结果为0

3 | 4
3(0000 0011)
4(0000 0100)
-------------
7(0000 0111)

异或[ ^ ]:相同为0,不同为1

3 ^ 4
3(0000 0011)
4(0000 0100)
-------------
7(0000 0111)

左移[ << ]:各二进位全部左移若干位,高位丢弃,低位补0

1、左移可看作 整数M乘以2的N次方
2、"<<"右边的数字就是N,左边的数字就表示这个整数M

3<<4 
3(0000 0011)待移位的数字
 6(0000 0110)左移第一位,左移一位之后,最右边的将会缺失,所以不足位数,补一位0,最左边将会多出一位,所以舍掉一位
12(0000 1100)左移第二位,最右边再补一位0,最左边再舍掉一位
24(0001 1000)左移第三位,最右边再补一位0,最左边再舍掉一位
48(0011 0000)左移第四位,最右边再补一位0,最左边再舍掉一位

 = 3 * 2⁴ 
 = 3 * 16 
 = 48

右移[ >> ]:各二进位全部右移若干位,低位丢失,高位补0

右移可看作 整数M除以2的N次方

"<<"右边的数字就是N,左边的数字就表示这个整数M

8 >> 2
8(0000 1000)待右移的数字
4(0000 0100)右移第一位,最左边将会缺失一位,不足位数补一位0,最右边将会多出一位,所以舍掉最右边的一位
2(0000 0010)右移第二位,最左边再补一位0,最右边再舍掉一位

= 8 / 2²
= 8 / 4
= 2

取反[ ~ ]:0变1,1变0

按位取反:二进制每一位取反,0变1,1变0。

~9的计算步骤:

转二进制:0 1001

计算补码:0 1001

按位取反:1 0110

转为原码:

按位取反:1 1001  

末位加一:1 1010

符号位为1是负数,即-10

“~x”的结果为“-(x+1)”

标签:右移,0100,0000,0011,取反,一位,运算符
来源: https://blog.csdn.net/weixin_53962080/article/details/122745983

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有