欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

位运算

程序员文章站 2022-05-02 19:09:45
...

基本位运算包含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

相关标签: 位运算 位移