深入理解计算机系统:位运算

深入理解计算机系统学习笔记

第2章信息的表示和处理–2.1.7C语言中的位级运算–P37

代码

#include<cstdio>
void inplace_swap(int *x,int *y){
	//交换值,不需要第三个位置来临时存储另一个值,并没有性能上的优势,仅仅是一个智力游戏。 
	*y = *x ^ *y;//y=x^y x=x; 
	*x = *x ^ *y;//x=x^(x^y)=(x^x)^y=0^y=y y=x^y;
	*y = *x ^ *y;//y=y^(x^y)=(y^y)^x=0^x=x x=y;
}
void reverse_array(int a[],int cnt){
	//反转数组 
	int first,last;
	for(first=0,last=cnt-1;first<last;first++,last--){
		inplace_swap(&a[first],&a[last]);
	}
}
int main(){
	int x,y;
	scanf("%d %d",&x,&y);
	inplace_swap(&x,&y);
	printf("%d %d\n",x,y);
	int a[]={1,3,4,6,7,9,8};
	for(int i=0;i<7;i++){
		printf("%d",a[i]);
		if(i!=6){
			printf(" ");
		}else{
			printf("\n");
		}
	}
	reverse_array(a,7);
	for(int i=0;i<7;i++){
		printf("%d",a[i]);
		if(i!=6){
			printf(" ");
		}else{
			printf("\n");
		}
	}
	int c=0x89ABCDEF;
	printf("c=%x\n",c);
	printf("~c=%x\n",~c);//每位取反 
	printf("c&0xff=%x\n",c&0xff);//保留最低有效字节,其他位置置0  
	printf("c^~0xff=%x\n",c^~0xff);//保留最低有效字节,其他字节取反 
	printf("c|0xff=%x\n",c|0xff);//最低有效字节设置为全1,其他字节保持不变 
	return 0;
} 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值