C++位运算符及逻辑运算符
来源:互联网 发布:除湿机哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/03 17:22
对于一些新手来说,很多时候搞不清楚&和&&的区别,特此在这里整合说明一下,方便以后查看
首先想一个问题:什么是位(bit)?
很简单,位(bit)就是单个的0或1,位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(byte)由八个位组成,一个字(word)是二个字节或十六位,一个双字(dword)是二个字(words)或三十二位。
使用位运算的好处是可以将byte, word 或 dword 作为小数组或结构使用。通过位运算可以检查位的值或赋值,也可以对整组的位进行运算。
有6种位运算:
& 与运算
| 或运算
^ 异或运算
~ 非运算(求补)
>> 右移运算
<< 左移运算
(1)与运算(&)
双目运算。二个位都置位(等于1)时,结果等于1,其它的结果都等于0。
1 & 1 == 1
1 & 0 == 0
0 & 1 == 0
0 & 0 == 0
(2)或运算( | )
双目运算。二个位只要有一个位置位,结果就等于1。二个位都为0时,结果为0。
1 | 1 == 1
1 | 0 == 1
0 | 1 == 1
0 | 0 == 0
(3)异或运算(^)
双目运算。二个位不相等时,结果为1,否则为0。
1 ^ 1 == 0
1 ^ 0 == 1
0 ^ 1 == 1
0 ^ 0 == 0
(4)非运算(~)
单目运算。位值取反,置0为1,或置1为0。非运算的用途是将指定位清0,其余位置1。非运算与数值大小无关。
(5) 移位运算(>> 与 <<)
将位值向一个方向移动指定的位数。右移 >> 算子从高位向低位移动,左移 << 算子从低位向高位移动。
下面来说说 & 和 && 的区别,以及 | 和 || 之间的不同
&&相当一个开关语句,就是说如果&&前面值为false那么他就不继续执行后面的表达式;而&不管前面的值为什么,总是执行其后面的语句。
&& 和 || 是boolean的逻辑运算, 返回为bool值
&是位运算符,它会将两边的运算都计算出来,再进行与运算; &是用来处理0101这样的2进制字符的位运算的。
同样的道理,|| 也是布尔逻辑运算符,只要有一边的运算结果是true,它会马上返回true。
- C++位运算符及逻辑运算符
- 【C语言】移位运算符、位运算符、逻辑运算符
- C\C++,delphi,vb 逻辑运算符和位运算符
- 逻辑运算符&位运算符
- C语言中的逻辑运算符和位运算符总结
- C语言中的逻辑运算符和位运算符
- C语言中的逻辑运算符和位运算符总结
- C/C++之位运算符与逻辑运算符详解
- c语言位运算符与逻辑运算符的区别
- 逻辑运算符与位运算符
- 移位运算符 以及 位逻辑运算符
- 位运算符与逻辑运算符
- 位运算符和逻辑运算符
- java逻辑运算符位运算符总结
- 逻辑运算符和位运算符
- 逻辑运算符和位运算符
- 逻辑运算符与位运算符
- 逻辑运算符&&、||与&、| 位运算符
- SQL查表关键字使用简介
- cmd Notes
- JavaScript方法总结
- ABAP 向上取整和向下取整 CEIL & FLOOR
- 郑州轻工业学院第八届玲珑杯校赛题解
- C++位运算符及逻辑运算符
- android 关于Bitmap对象于内存管理
- TCP—Nagle算法
- 图片缓存 - SDWebImage
- Android 中利用WebViewJavascriptBridge 实现js和java的交互
- Web前端初步——札记0
- ”Android资源文件匹配“调研
- 画虚线
- zlib剖析(三)