位运算

一 位运算符

&与运算:被比较的两个数,最后一位都为1,结果才是1

比如11&15,他们二进制是1011和 1111

1011

1111

结果1011,所以是11

比如128和129,他们二进制是10000000和 1000000100001101

10000000

10000001

结果=10000000所以结果是128

|或运算:被比较的两个数的二进制位数只有一个是1就为1,

我们计算11|15

1011

1111

=1111所以结果是15

我们计算128和129

10000000

10000001

=10000001结果为129

^异或运算:真真为假,假假为假,真假为真,假真为真。是转换成二进制按位进行比较,1111^0000 1-0为真1,

1-0为真1,1-0为真1,1-0为真1,那么结果就是1111,还是15.

~非运算:如果二进制位是1,结果为0,如果为是0,结果为1

比如~11

那么结果就是1011 – 0100

二 位移运算

<<左位移

向左移动n位,然后在低位补0.

16<<3

00000000 0000 0000 0000 0000 0001 0000红色为移掉部分

结果00000000 0000 0000 0000 0000 1000 0000 红色为补齐

结果:128

>>右位移(有符号)

向右移动n位,在高位补0,如果为负数,在高位补1

16>>3

00000000 0000 0000 0000 0000 0001 0000 红色为移掉部分

00000000000 0000 0000 0000 0000 0001 0 红色为补齐部分

结果为2

-16>>3

0000 0000 0000 0000 0000 0000 0001 0000

去反

1111 1111 1111 1111 1111 1111 1110 1111

加1

1111 1111 1111 1111 1111 1111 1111 0000

然后右移3位

1111 1111 1111 1111 1111 1111 1111 0000

1111 1111 1111 1111 1111 1111 1111 1110

>>>无符号右位移

向右移动n位,在高位补0,不考虑正负符号

16>>>3结果为2

-16>>>3

1111 1111 1111 1111 1111 1111 1111 0000

0001 1111 1111 1111 1111 1111 1111 1110

 

 

====================================================

假设A = 25,B =44;

那么二进制总共8位,每一位对应着一个值,从最低位到最高位依次是1,2,4,8,16,32,64,128,所以我们的每一个数组都可以根据这个计算出来

A= 25, 16 < 25 < 32,所以16位置肯定是1,现在还剩25-16 =9, 8< 9 <16,所以8的位置肯定是1 ,最后9-8 =1, 1的话刚好是最低位的位置

结果就是 

12864 32 16 8 4 2 1

0     0  0   1  1 0 0 1

 

B= 44,<32<44<64,所以32的位置上是1,44-32=12 < 16所以 8的位置1,12-8  = 4 那么4的位置就是1,最终二进制结果就是

12864 32 16 8 4 2 1

0     0  1   0  1 1 0 0

 

那么我们现在计算 A& B 和 A|B 和 A^B

第一种 A& B

00 0 1 1 0 0 1

00 1 0 1 1 0 0

我们知道& 表示比较的双方都需要为true

所以0&0= 0, 0&1=0 1&0 =0 1 & 1 =1

所以结果就是

00 0 0 1 0 0 0 转化为10进制就是8

 

第二种 A|B 只要有一个是true,结果为true

0|0= 0 1|0 =1 0|1 =1 1|1 =1

00 0 1 1 0 0 1

00 1 0 1 1 0 0

 

00 1 1 1 1 0 1 转化为10进制就是61

 

第三种异或A^B

异或表示有一个为真且有一个为假才算真,否则为假也就是不能同时为真或者同时为假

00 0 1 1 0 0 1

00 1 0 1 1 0 0

 

00 1 1 0 1 0 1 结果为0*128+0*64+1*32 +1*16+0*8 + 1*4 + 0*2 + 1*1= 53

 

发布了317 篇原创文章 · 获赞 115 · 访问量 66万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章