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

到此就结束了。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 中级java笔试题_Java中级面试题合集[通俗易懂]

    中级java笔试题_Java中级面试题合集[通俗易懂]Java中级面试题合集:1.弹出式选择菜单(Choice)和列表(List)有什么区别Choice是以一种紧凑的形式展示的,需要下拉才能看到所有的选项。Choice中一次只能选中一个选项。List同时可以有多个元素可见,支持选中一个或者多个元素。2.如何确保N个线程可以访问N个资源同时又不导致死锁?使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁…

  • 数据结构 单一列表

    数据结构 单一列表

  • 软件测试 因果图_软件测试因果图

    软件测试 因果图_软件测试因果图因果图是一种形式语言,用自然语言描述的规格说明可以转化为因果图。因果图实际上是一种数字逻辑电路(一个组合的逻辑网络),但没有使用标准的电子学符号,而是使用了稍微简单点的符号,它有助于用一个系统的方法选择出高效的测试用例集,它还有一个额外的好处就是可以指出规格说明的不完整和不明确之处。 生成测试用例采用的过程:将规格说明分解为可执行的片段。这是必须的步骤,因为因果图不善于处理较大的规格说明。 …

  • ESLint结合gulp使用

    ESLint结合gulp使用ESLint结合gulp使用一、安装二、使用步骤1.引入库2.读入数据总结一、安装示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseabornassnsimportwarningswarnings.filterwarnings(‘ignore’)im

  • stemwin实战篇_赖世雄入门篇

    stemwin实战篇_赖世雄入门篇特别说明:原创教程,未经许可禁止转载,教程采用回复可见的形式,谢谢大家的支持。armfly-x2,x3,v2,v3,v5开发板裸机和带系统的emWin工程已经全部建立,链接如下:http://bbs.

  • 10240

    10240一个特殊的日子

发表回复

您的电子邮箱地址不会被公开。

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