位运算

简介: 位运算

什么是位运算

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


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


与(&)

规则:二进制对应位两两进行逻辑 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

目录
相关文章
|
8月前
玩转位运算
玩转位运算
|
3月前
|
机器学习/深度学习
位运算详解
本文介绍了位运算符及其基本操作,并通过几个例题详细解析了位运算的应用。内容包括左移`&lt;&lt;`、右移`&gt;&gt;`、按位取反`~`、与运算`&`、或运算`|`和异或运算`^`等运算符的使用方法。基本操作部分展示了如何检查和修改二进制位,以及异或运算的性质。例题部分则通过判定字符是否唯一、丢失的数字、两整数之和和消失的两个数字等问题,具体说明了位运算的实际应用技巧。
72 7
位运算详解
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
94 0
位运算专题(个人理解)
位运算专题(个人理解)
78 0
|
算法
位运算能做什么
位运算能做什么
57 0
|
存储
【位运算】怕位运算?有我你何足畏惧
【位运算】怕位运算?有我你何足畏惧
83 0
位运算的小技巧
快速学习位运算的小技巧
位运算:题集
1.a^b(快速幂) 题目: 求 a 的 b 次方对 p 取模的值。
107 0