C++ 位运算符的语法和使用
教程导读
学研发网的这篇信息学奥赛技术教程文章主要介绍了C++ 位运算符的语法和使用,现在分享给大家,供学习和参考。文章包含1308字,纯文字阅读大概需要4分钟。
教程信息
学习目标
了解位运算符的语法和使用
了解教程练习代码
C++中提供了一些位运算操作符,位运算符包括对整数的二进制
表示进行位左移
、位右移
、位与
、位或
、位异或
、位取反
等操作。
一、C++位运算操作符
基本规则:
1.位与运算(&):
有0为0,双1为1
a | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
b | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
a & b | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
2.位或运算(|):
有1为1,双0为0
a | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
b | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
a | b | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
3.位非运算(~):
也叫按位取反运算,1变0,0变1
a | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
~a | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
4.异或运算(^):
相同为0,不同为1
a | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
b | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
a ^ b | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
5.左移(<<):
所有位依次向左移动,右边补0
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
1 << 2 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
6.右移(>>):
所有位依次向右移动,左边补0
128 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
128 >> 5 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
一般的考试题是:先进行位运行,然后再将位运算之后的二进制转换成十进制或其他进制。
二、案例代码演示
练习:位运算符练习。
如题
输入输出:
【输入描述】无 【输出描述】输出过程计算结果 【样例输入】无 【样例输出】看截图
参考代码:
#include<iostream> using namespace std; int main() { // 二进制表示为 0101 int a = 5; // 二进制表示为 0011 int b = 3; // 位与运算 int bitAnd = a & b; // 结果为 0001,即 1 cout << "位与运算: " << bitAnd << endl; // 位或运算 int bitOr = a | b; // 结果为 0111,即 7 cout << "位或运算: " << bitOr << endl; // 位异或运算 int bitXOR = a ^ b; // 结果为 0110,即 6 cout << "位异或运算: " << bitXOR << endl; // 位取反运算,记住公式:~n = -(n+1) int bitNot = ~a; // 结果为 1111 1010,即 -6(因为采用补码表示) cout << "位取反运算: " << bitNot << endl; // 左移运算 int bitLeft = a << 2; // 结果为 010100,即 20 cout << "左移运算: " << bitLeft << endl; // 右移运算 int bitRight = a >> 2; // 结果为 0001,即 1 cout << "移运算: " << bitRight << endl; return 0; }
执行结果:
同学们要掌握位运算符的计算方法。
教程咨询
如果章节内容看不懂,可以联系作者。
教程总结
以上是学研发网为您提供C++ 位运算符的语法和使用的全部内容,希望教程文章能够帮你了解学习C++ 位运算符的语法和使用,解决所遇到的问题。 如果觉得学研发网信息学奥赛教程内容还不错,欢迎将学研发网网站推荐给身边需要的人。
教程备注
版权声明:教程内容为学研发网整理和编写,如需转载请联系站长并附上文章原始链接和原始作者信息。
手机阅读
扫描二维码推送至手机访问。
本文链接:http://www.xueyanfa.com/xinaojiaocheng/xinaocpp-93.html