位运算

白诗秀儿 关注

收藏于 : 2018-09-14 20:18   被转藏 : 1   

基本位运算包含6种运算符

& 按位与

| 按位或

^ 按位异或

~ 取反

<< 左移

>> 右移(>>>无符号右移)

 & 按位与运算

&运算符为双目运算符,参与运算的数以补码方式

相同位的两个数字都为1,则为1;若有一个不为1,则为0

 

3 & 5 = 1

0000 0011

0000 0101

0000 0001

 

| 按位或运算

|运算符为双目运算符,参与运算的数以补码方式

相同位只要一个为1即为1;否则为0

3 | 5 = 7

0000 0011

0000 0101

0000 0111

 

^ 按位异或运算

^运算符为双目运算符,参与运算的数以补码方式

相同位不同则为1,相同则为0

3 ^ 5 = 6

0000 0011

0000 0101

0000 0110

 

~ 取反运算

^运算符为单目运算符,参与运算的数以补码方式

二进制每一位取反,0变1,1变0

~9 = -10:

二进制:  0000 1001

补码:     0000 1001

取反:     1111 0110

转原码:

取反:     1000 1001  

末位加1:1000 1010

 

<< 左移运算

^运算符为双目运算符,参与运算的数以补码方式

二进制左移若干位,高位丢弃,低位补0

在二进制数后添一个0就相当于该数乘以2

3<<2 = 12

0000 0011

0000 1100

 

>> 右移运算

^运算符为双目运算符,参与运算的数以补码方式

二进制右移若干位(符号位也需要移动),低位丢弃;左边移出的空位或者一律补0,或者补符号位,这由不同的机器而定(一般对于无符号类型强制补0,对于有符号类型续补符号位)

最大公约数的二进制算法用除以2

5>>2 = 1

0000 0101

0000 0001

 阅读文章全部内容  
点击查看
文章点评
相关文章
白诗秀儿 关注

文章收藏:1308

TA的最新收藏