位运算

简介: 位运算

什么是位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。


位运算就是直接操作二进制数,常见的运算符有( & )、( | )、异或( ^ )、取反( ~ )、左移( << )、右移( >>带符号右移>>>无符号右移动)。下面来细看看每一种位运算的规则。


与(&)

规则:二进制对应位两两进行逻辑 AND 运算。即:只有对应位的值都是 1 时结果才为 1 , 否则即为 0

示例: 0&0=0 , 0&1=0 , 1&1=

位运算与.png


或(|)

规则:二进制对应位两两进行逻辑或运算。即:对应位中有一个为 1 则为 1

示例: 0|0=00|1=11|1=1

位运算或.png


异或(^)

规则:二进制对应位两两进行逻辑 XOR (异或) 的运算。即:当对应位的值不同时为 1 , 否则为 0

示例: 0^0=0 , 0^1=1 , 1^1=0

位运算异或.png


按位取反(~)

规则:二进制的 0 变成 11 变成 0

按位取反.png


移位

  1. 左移<<):左移后右边位补 0
  2. 右移>>):右移后左边位补原最左位值(可能是0,可能是1)
  3. 无符号右移>>>):右移后左边位补 0


解读

  1. 对于左移运算符 << 没有悬念右侧填个零无论正负数相当于整个数乘以 2
  2. 右移运算符就有分歧了,分别是左侧补0 >>> 和左侧补原始位 >> ,如果是正数没争议左侧都是补 0 ,达到除以 2 的效果;如果是负数的话左侧补0 >>> 那么数值的正负会发生改变,会从一个负数变成一个相对较大的正数。而如果是左侧补原始位(负数补 1 ) >> 那么整个数还是负数,也就是相当于除以 2 的效果。

移位运算.png

目录
相关文章
|
5月前
玩转位运算
玩转位运算
|
12月前
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
50 0
|
4月前
|
编译器 Linux C++
详细解读C++中的位运算总结
详细解读C++中的位运算总结
24 0
|
4月前
|
机器学习/深度学习
常见位运算的总结
常见位运算的总结
33 0
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
84 0
|
存储 Java 程序员
“高端”的位运算
大家好,我是王有志。原计划迭代作为预备知识的收尾,不过在解2的幂和4的幂时,想到关于数字2的问题可以通过位运算去解决,因此补充了关于位运算的内容。
82 1
位运算专题(个人理解)
位运算专题(个人理解)
66 0
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
存储
【位运算】怕位运算?有我你何足畏惧
【位运算】怕位运算?有我你何足畏惧
72 0