提及位运算的前提: 计算机内部储存数据都是二进制的形式,只有 0 和 1 两种;
什么是位运算: 加减乘除(+,-,*,/)都是位运算,(包括符号位);
为什么要学习位运算:(个人认为是为了提高运算效率);
按照二进制位进行位运算!!!!!!!
位运算符号:
& ------- 与---------两位都是1时,结果(返回值)才是1;
| ----------或-----------两位都是零时,结果才是零;
~ ---------取反 --------0变成1,1变成0;
^ -------异或-----------两位相同结果是零,不同结果是1(很奇怪,为什么不能相同时,结果是1);
要特别注意的是在c++中:x的三次方只能写成是x*x*x不能写成x^3;
<< -------左移------二进制全部向左移动若干位,高位舍弃,低位补0;(相当于承2的若干次方);
>> -------右移-------二进制全部向右移动若干位,(相当于除2的若干次方);
列一下&运算:
0&0=0;1&0=0;0&1=0;1&1=1;
还有就是:c++哈希表中的for (auto&c : a);
c从a的头开始,一直到a的尾,
链接如下:
,c++哈希表中的for (auto c : a)_m0_60891676的博客-CSDN博客
左移右移运算:
<<
>>