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)


相关推荐

  • 1.如何实现MT4帐号同步交易?

    1.如何实现MT4帐号同步交易?使用本跟单EA,可以实现在同一台计算机上运行两个(或更多个)MetaTrader4自动复制交易。您使用其中一个MT4帐号手动交易或者使用EA自动交易,那么其它一个(或更多个)MT4,会立即复制此帐号中的订单。您可以运行多个喊单EA和多个跟单EA,可以实现一个帐号跟多个帐号,或者多个帐号跟一个帐号,又或者多个帐号跟多个帐号。用来喊单的MT4帐号不需要帐号必须拥交易权限,因此,可以使用MT4“投资者”密码登录。投资者密码,又称呼“只读密码、观摩密码”。…

  • wireshark抓取dns数据包_2021年dns

    wireshark抓取dns数据包_2021年dns实验步骤一根据实验环境,本实验的步骤如下:1、测试环境中获取DNS数据包。2、分析DNS数据包。任务描述:获取两种类型的DNS数据包(1)通过浏览器访问域名(www.baidu.com)来获取DNS数据虽然合天实验室环境下,无法抓取此部分数据包(其实也可以自己搭建服务器,配置DNS服务器,但设计者比较懒,就将就下吧),但设计者希望学习的人能根据例子在自己的笔记本上抓取,然后分析。我们以登录www.baidu.com来获取DNS数据,启动Wireshark,在Filter中输入dns。打开浏览器

  • 天翼网关设置为桥接模式_天翼网关桥接模式

    天翼网关设置为桥接模式_天翼网关桥接模式前两年将家里的电信宽带升级到光纤,光猫也随之进行了升级,当时升级好后,电信工作人员介绍说新的光猫带有wifi功能,如果连接路由器可以不用配置路由器的拨号设置,说是升级到光纤后可以直接连接网线上网,不用再拨号了。当时也没怎么在意,网线连上路由器之后,果然没做宽带的账号设置就可以正常上网了。最近在使用一个软件客户端的时候需要设置宽带拨号的方式更换IP才能使用某个功能,然后才发现家里的宽带升级到光纤后,无法使用原来的拨号方式上网了。通过网络搜索,是因为升级光纤后,将连接的模式设置为路由模式,导致无法使用拨号上

    2022年10月27日
  • python 字符串按行切割

    python 字符串按行切割strs=xxxxxs.split(‘\n’)if__name__==’__main__’:response=requests.get(“https://video.buycar5.cn/20200809/Vqdbr9lj/2000kb/hls/index.m3u8”)split=response.text.split(‘\n’)print(split)

  • 基于gitlab的CICD流程规范

    基于gitlab的CICD流程规范前言:这篇文章主要讲一讲基于gitlab的CICD流程规范基于gitlab的CICD流程规范一、简介二、CICD流程图三、CICD说明四、结合CICD流程拓展1、业务代码-数据库基于flyway实现版本控制2、数据库版本控制3、二进制或内置五、代码质量检查及自动化测试(未来)六、疑问解答与加群交流学习一、简介为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范CICD流程,以提升整体团队效率。二、CICD流程图三、CICD

  • Java虚拟机学习 – 垃圾收集器 (4)

    Java虚拟机学习 – 垃圾收集器 (4)

发表回复

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

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