位运算
一.概念
现代计算机中所有的数据都有以二进制的形式存储在设备中:即 0、1 两种状态。
计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算,即将符号位共同参与运算的运算。
↓
int变量会在计算机内先转化为二进制再进行相加。
因此,合理的运用位运算更能显著提高代码在机器上的执行效率。
二.位运算概览
- 与运算
- 或运算
- 异或运算
(以上详见之前的博文:听课与看视频的总结)
- 左移(<<)
- 右移(>>)
- 取反(~)
1.左移与右移
(1)左移(<<)
各二进位全部左移若干位,高位丢弃,低位补0
例如:设a = 10101100
则a<<4 = 11000000
(2)右移(>>)
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
2.取反
~0=1 ~1=0
例如:~00001111 = 11110000
三.不同长度的数据进行位运算
如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。
注意:如果一个long型数据与一个int型数据进行"与运算",右端对齐后,左边不足的位按以下三种情况补足
(1)如果整型数据为正数,左边补16个0
(2)如果整型数据为负数,左边补16个1
(3)如果整形数据为无符号数,左边也补16个0
*如有问题欢迎指出!
2021/10/16