看大家都在发帖。我新人也来一贴。自己的详解也算原创吧。码字很辛苦。希望大家多多顶贴
为了方便记忆。
下面我用例子和大家说明
位或(0遇1变1,相同不变) or
位取反(运算数相反数减1) not (这运算数十进制数据)
位与(1遇0变0,相同不变) and
位异或(同0不变,1遇1变0,0遇1变1) xor
左移(运算数乘2的N次方根) shl
右移(运算数除2的N次方根) shr
注解是我自己写的,方便理解
比如位或里面的含意是这样的,
比如: 5 or 2 =7
我们转换成二进制看看 5=101 2=010
101
or 注解:0遇1变1,相同不变
010
----
111=7
这就是or 位或。的算法
然后我们看看not 位取反
这个要是用十进制是来算得的结果就是
比如
5 not = -6
6 not = -7 注解:运算数相反数减1,这里指的位算数是指十进制数据。
8 not = -9
如果用二进制查看的话
001 not = 1111111111111111111111111111111111111111111111111110
末尾为0,也就是于运算数为二进制.在二进制数据运算下,可以理解为运算的相反,如果转换成十进制,则结果就不同了。
下面我们来看看
位与(1遇0变0,相同不变) and
比如 5 and 1 = 1
6 and 1 = 0
二进制下为:
5 = 101
and 备注:1遇0变0,相同不变
1 = 001
1 = 001
----------------------------
6 = 110
and 备注:1遇0变0,相同不变
1 = 001
0 = 000
这样就是1遇0变0,相同不变的理解
下面来解释下
位异或(同0不变,1遇1变0,0遇1变1) xor
比如:
5 xor 1 = 4
5 xor 0 = 5
4 xor 0 = 4
5 = 101
xor 注解:同0不变,1遇1变0,0遇1变1
1 = 001
4 = 100
------------
5 = 101
xor 注解:同0不变,1遇1变0,0遇1变1
0 = 000
5 = 101
------------
4 = 100
xor 注解:同0不变,1遇1变0,0遇1变1
0 = 000
我们根据上面的运算就可以看出,当二进制两个0相遇时,结果不变,两个1相遇的时候则变为0,0和1相遇的时候变成1
下面来解释下
左移(运算数乘2的N次方根) shl
也可以理解为移动几位。
下面我们根据算数看出来它的规律
比如
4 shl 1 = 8
4 shl 2 = 16
5 shl 1 = 10
5 shl 2 = 20
下面是二进制的过程:
4 = 100
shl 注解:运算数乘2的N次方根
1 注解:这里指移动几位
8 = 1000 注解:移动1位得的结果
--------------------------------
4 = 100
shl 注解:运算数乘2的N次方根
2 注解:这里指移动几位
16 = 10000 注解:移动1位得的结果
--------------------------------
5 = 101
shl 注解:运算数乘2的N次方根
1 注解:这里指移动几位
10 = 1010 注解:移动1位得的结果
--------------------------------
5 = 101
shl 注解:运算数乘2的N次方根
2 注解:这里指移动几位
20 = 10100 注解:移动1位得的结果
这就是左移了,移动后用0补充
-------------------------------
好了下面我们讲解右移
右移(运算数除2的N次方根) shr
和左移一个意思。
就是二进制移动几位
比如
5 shr 1
5 = 101
shr 注解:运算数除2的N次方根
1 注解:移动位数
2 = 10
就是去掉后面X位数,也就是你定义的去掉几位。
这就是位运算了。。希望大家别喷。原创
为了方便记忆。
下面我用例子和大家说明
位或(0遇1变1,相同不变) or
位取反(运算数相反数减1) not (这运算数十进制数据)
位与(1遇0变0,相同不变) and
位异或(同0不变,1遇1变0,0遇1变1) xor
左移(运算数乘2的N次方根) shl
右移(运算数除2的N次方根) shr
注解是我自己写的,方便理解
比如位或里面的含意是这样的,
比如: 5 or 2 =7
我们转换成二进制看看 5=101 2=010
101
or 注解:0遇1变1,相同不变
010
----
111=7
这就是or 位或。的算法
然后我们看看not 位取反
这个要是用十进制是来算得的结果就是
比如
5 not = -6
6 not = -7 注解:运算数相反数减1,这里指的位算数是指十进制数据。
8 not = -9
如果用二进制查看的话
001 not = 1111111111111111111111111111111111111111111111111110
末尾为0,也就是于运算数为二进制.在二进制数据运算下,可以理解为运算的相反,如果转换成十进制,则结果就不同了。
下面我们来看看
位与(1遇0变0,相同不变) and
比如 5 and 1 = 1
6 and 1 = 0
二进制下为:
5 = 101
and 备注:1遇0变0,相同不变
1 = 001
1 = 001
----------------------------
6 = 110
and 备注:1遇0变0,相同不变
1 = 001
0 = 000
这样就是1遇0变0,相同不变的理解
下面来解释下
位异或(同0不变,1遇1变0,0遇1变1) xor
比如:
5 xor 1 = 4
5 xor 0 = 5
4 xor 0 = 4
5 = 101
xor 注解:同0不变,1遇1变0,0遇1变1
1 = 001
4 = 100
------------
5 = 101
xor 注解:同0不变,1遇1变0,0遇1变1
0 = 000
5 = 101
------------
4 = 100
xor 注解:同0不变,1遇1变0,0遇1变1
0 = 000
我们根据上面的运算就可以看出,当二进制两个0相遇时,结果不变,两个1相遇的时候则变为0,0和1相遇的时候变成1
下面来解释下
左移(运算数乘2的N次方根) shl
也可以理解为移动几位。
下面我们根据算数看出来它的规律
比如
4 shl 1 = 8
4 shl 2 = 16
5 shl 1 = 10
5 shl 2 = 20
下面是二进制的过程:
4 = 100
shl 注解:运算数乘2的N次方根
1 注解:这里指移动几位
8 = 1000 注解:移动1位得的结果
--------------------------------
4 = 100
shl 注解:运算数乘2的N次方根
2 注解:这里指移动几位
16 = 10000 注解:移动1位得的结果
--------------------------------
5 = 101
shl 注解:运算数乘2的N次方根
1 注解:这里指移动几位
10 = 1010 注解:移动1位得的结果
--------------------------------
5 = 101
shl 注解:运算数乘2的N次方根
2 注解:这里指移动几位
20 = 10100 注解:移动1位得的结果
这就是左移了,移动后用0补充
-------------------------------
好了下面我们讲解右移
右移(运算数除2的N次方根) shr
和左移一个意思。
就是二进制移动几位
比如
5 shr 1
5 = 101
shr 注解:运算数除2的N次方根
1 注解:移动位数
2 = 10
就是去掉后面X位数,也就是你定义的去掉几位。
这就是位运算了。。希望大家别喷。原创