c语言之异或运算_c语言运算符优先级表

c语言之异或运算_c语言运算符优先级表c语言之异或运算异或运算,计算机相关专业比较熟悉了。相同为0,不同为1.结合计算机内部的位运算,a^a=0;与本身异或是为0的。有关的知识运用到数据交互中去。voidint_swap(int*x,int*y){ *y=*x^*y;//step1 *x=*x^*y;//step2 *y=*x^*y;//step3}运用这个函数就能完成两个数据交换。但是并没有提高时间复杂度和空间复杂度,有关书籍上称之为智力游戏。我们来看看数据的变化。假设*x=a,*y=b.*x*y

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

c语言之异或运算

异或运算,计算机相关专业比较熟悉了。相同为0,不同为1.结合计算机内部的位运算,a^a=0;与本身异或是为0的。有关的知识运用到数据交换中去。

void int_swap(int *x,int *y){ 
   
	*y=*x^*y;//step1
	*x=*x^*y;//step2
	*y=*x^*y;//step3
}

Jetbrains全家桶1年46,售后保障稳定

运用这个函数就能完成两个数据交换。但是并没有提高时间复杂度和空间复杂度,有关书籍上称之为智力游戏。我们来看看数据的变化。

假设*x=a,*y=b.

*x *y
step1 a a^b
step2 a^a^b=b a^b
step3 b b^a^b=a

可在DEV上运行的完整代码,供大家学习。

#include<stdio.h>
void int_swap(int *x,int *y){ 
   
	*y=*x^*y;
	*x=*x^*y;
	*y=*x^*y;
}
int main(){ 
   
	int *x;
	int *y;
	int i=10;
	int j=20;
	x=&i;
	y=&j;
	printf("first x= %d\ny= %d\n",*x,*y);
	int_swap(x,y);
	printf("second x= %d\ny= %d\n",*x,*y);
	return 0;
}

很简单就没有注释,关键是我太懒,还有就是好久不写代码了!太菜太菜。

这里给大家一个网站吧,c网页编译器

我不想保存的,或者调试的喜欢用网页运行一下。专业课太多和自己贪玩c快荒废了。最近在啃一本书《计算机体系结构》其实也没有多少时间,最近忙着做其他的项目,但是力不从心。

下面给大家一个数组交换的代码。不多说了,精力有限。

#include<stdio.h>
void int_swap(int *x,int *y){ 
   
	*y=*x^*y;
	*x=*x^*y;
	*y=*x^*y;
}
void reverse_array(int a[],int cnt){ 
   
	int first,last;
	for(first=0,last=cnt-1;first<last;first++,last--) int_swap(&a[first],&a[last]);
	printf("first=%d,last=%d\n",first,last);
	for(int i=0;i<21;i++) printf("%d\n",a[i]);
}
int main(){ 
   
	int *x;
	int *y;
	//int i=10;
	//int j=20;
	//x=&i;
	//y=&j;
	int a[21];
	for(int i=1;i<22;i++){ 
   
		a[i-1]=i;
	}
	reverse_array(a,21);
	//printf("first x= %d\ny= %d\n",*x,*y);
	//int_swap(x,y);
	//printf("second x= %d\ny= %d\n",*x,*y);
	return 0;
}

大家可以自己输入数组的数据,或者用自己喜欢的方式都ok的!

我的结果是这样的。

first=10,last=10
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

Process exited after 0.114 seconds with return value 0

到此就结束了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231293.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JDK卸载和彻底删除「建议收藏」

    JDK卸载和彻底删除「建议收藏」第一步:点击“控制面板”。第二步:点击“卸载程序”。第三步:进入到“程序和功能”界面,找到jdk的两个程序:①java8update171(64-bit);②javaSEDevelopmentKit8update171(64-bit);右击卸载即可第四步:在“运行”中输入Regedit,打开注册表编辑器,找到HKEY_LOCAL_MACHINE/SOFTWARE/JavaSo…

    2022年6月30日
    54
  • rabbitmq 启动命令「建议收藏」

    rabbitmq 启动命令「建议收藏」linux系统:centos71.启动前,查看mq状态systemctlstatusrabbitmq-server2.启动systemctlstartrabbitmq-server3.停止systemctlstoprabbitmq-server4.重启restart5.打开浏览器管理页面:默认端口号15672systemctlstatusfirewalld//关闭防火墙systemctldisablefirewalldsystemctlstopfir

    2025年6月10日
    2
  • js json字符串转json数组_string转json数组

    js json字符串转json数组_string转json数组查了很久,也实践了很多,都没有成功。网上说得最多的就是用 net.sf.json.JSONArray和net.sf.json.JSONObject两个jar包里面的JSONArrayjsonArray=JSONArray.fromObject(JsonStr);//字符串转成Json对象list=JSONArray.toList(jsonArray,Pojo.class);

    2022年10月6日
    3
  • 解决 bcm43问题

    解决 bcm43问题

    2021年5月3日
    161
  • CMOS图像传感器基础知识和参数理解「建议收藏」

    CMOS图像传感器基础知识和参数理解「建议收藏」CMOS图像传感器的工作原理:每一个CMOS像素都包括感光二极管(Photodiode)、浮动式扩散层(Floatingdiffusionlayer)、传输电极门(Transfergate)、起放大作用的MOSFET、起像素选择开关作用的M0SFET.在CMOS的曝光阶段,感光二极管完成光电转换,产生信号电荷,曝光结束后,传输电极门打开,信号电荷被传送到浮动式扩散层,由起放大作用的MOSFET电极门来拾取,电荷信号转换为电压信号。所以这样的CMOS也就完成了光电转换、电荷电压转换、模拟数

    2022年5月17日
    148
  • UITextView 手势触发 TouchesBegan 函数

    UITextView 手势触发 TouchesBegan 函数前几天做了个手势可以改变文章字体大小的功能。开始,在当前view中添加一个UITextView,然后添加-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event函数,可怎么也触发不了,在网上找了些资料,说得也不是很清楚,今天把它总结下。       首先说原因吧,你把UITextView加载到当前view上,

    2022年7月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号