当前位置 : 主页 > 编程语言 > python >

位算符详解 按位与、或、异或、取反、左移、右移

来源:互联网 收集:自由互联 发布时间:2022-08-15
1.按位与() int a = 3, b = -2 , c = a b ; 3-2 结果:2 2.按位或(|) int a = 3, b = -2 , 3|-2 结果:-1 3.按位异或(^) int a = 3, b = -2 , c = a ^ b ; 3^-2 结果:-3 4.按位取反(~) int a=18, b = ~ a; ~

1.按位与(&)

int a = 3, b = -2 , c = a & b ;

3&-2
结果:2

位算符详解 按位与、或、异或、取反、左移、右移_位算符

2.按位或(|)

int a = 3, b = -2 ,

3|-2
结果:-1

位算符详解 按位与、或、异或、取反、左移、右移_操作数_02

3.按位异或(^)

int a = 3, b = -2 , c = a ^ b ;

3^-2
结果:-3

位算符详解 按位与、或、异或、取反、左移、右移_十进制数_03

4.按位取反(~)

int a=18, b = ~ a;

~2
结果:-3

位算符详解 按位与、或、异或、取反、左移、右移_位算符_04

5.左移(<<)

<<  :左移 左边最高位丢弃,右边补齐0

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方

32>>3
结果:4

用来将一个数的各二进制位全部左移若干位,移动的位数由右操作数指定,右操作数必须是非负值,其右边空出的位用0填补,高位左移溢出则舍弃该高位。

左移表达式的的位 result = expression1 << expression2

参数 result,任何变量。

expression1,任何表达式,需要移位的数字。

expression2,任何表达式,移位的次数。

用来将一个数的各二进制位全部左移若干位。例如:

将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60(为简单起见,用8位二进制数表示十进制数15,如果用左移运算符16位二进制数表示,结果是一样的)。

高位左移后溢出,舍弃。

左移一位相当于该数乘以2,左移2位相当于该数乘以2^2=4。上面举的例子15<< 2=60,即乘了4。但此结论只适用于该数左移时被溢出舍弃的高位中不包含1的情况。

例如,假设以一个字节(8位)存一个整数,若a为无符号整型变量,则a=64,即二进制数01000000时,左移一位时溢出的de是0。而左移2位时,溢出的高位中包含1,则不符合上述结论。

由下表可以看出,若a的值为64,在左移一位后相当于乘2,左移2位后,值等于256。

简单介绍一种方便计算的方法:

8 << 1的值为8*2=16;

8 << 2的值为8*(2^2)=32;

8 << n的值为8*(2^n)。

数学意义:

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

6.右移(>>)

>> :右移 最高位是0,左边补齐0;最高为是1,左边补齐1

右移一位相当于除2,右移n位相当于除以2的n次方。

2<<3
结果:16

右移有两种:

1、逻辑右移:丢弃最低位,向右移位,左边空出来的位置补0

2、算术右移:丢弃最低位,向右移位,左边空出来的位置补原来的符号位(即补最高位)

上一篇:python_cookbook学习笔记
下一篇:没有了
网友评论