位操作(左移和右移)

位操作提高程序运行效率 减少除法和取模的运算。在计算机程序中数据的位是可以操作的最小数据单位,理论上可以用”位运算”来完成所有的运算和操作。

左移,后空缺自动补0;

右移,分为逻辑右移和算数右移

1)逻辑右移 不管是什么类型,空缺自动补0;

2)算数右移 若是无符号数,则空缺补0,若是负数,空缺补1;

#include
int main()
{
	int i=305162121,j;
	printf("0x%x\n",i);
	j=i<<(sizeof(int)*4); //左移16位
	j=j|i>>sizeof(int)*4;   //右移16位,前16位为0
	printf("0x%x\n",i);
	return 0;
}

 输出结果

位操作(左移和右移)_第1张图片    

 

不使用第三方变量,交换两个变量的值

(1)a = a + b;

b = a - b;

a = a - b;

(2)a = a ^ b;

b = a ^ b;

a = a ^ b;

 

你可能感兴趣的:(位操作(左移和右移))