利用位运算和指针实现的交换两个数的程序
位运算是C语言的一大特色,利用异或运算可以实现交换两个数,原理是一个整数与另外一个数进行两次异或运算仍然是其本身,基本原理用式子表达如下:
(1) A ^ A = 0;
(2) A = A ^B;
(3) B = A ^B;(相当于B = A ^ B ^ B ,即 B = A)
(4) A= A ^ B;(相当于A = A ^B ^A ,即A = B)
利用位运算不仅提高了代码的执行速度,而且此处还减少了对辅助变量的需求,因此提高了程序的效率。
一个具体的程序如下:
- #include<stdio.h>
- void swap(int *a, int *b)
- {
- *a = (*a) ^ (*b);
- *b = (*a) ^ (*b);
- *a = (*a) ^ (*b);
- }
- int main(void)
- {
- int a, b;
- printf("please input two integers for example 3 4/n");
- scanf("%d %d",&a,&b);
- printf("Before swap a = %d, b = %d/n",a,b);
- swap(&a,&b);
- printf("After swap a = %d, b = %d/n",a,b);
- }
不得不说赞两句 硬盘上的二进制数据 用这个方法有效地交换数据 不需要第三方变量 实在是不错
利用位运算和指针实现的交换两个数的程序相关推荐
- php 位运算与权限,PHP巧妙利用位运算实现网站权限管理的方法
首先我们先定义4个常量来设定四种权限: ===================================== define(ADD,1);//增加数据库记录的权限 define(UPD,2);/ ...
- 利用位运算解决 N 皇后问题
题目: LeetCode 51. N-Queens 分析: N 皇后问题是考查递归回溯的经典问题,深度优先搜索的难点在于如何剪枝,在这个问题里面的剪枝,我们需要利用额外的空间去记录当前行的有效空位,只 ...
- C# 利用位运算传递多个参数方法
前言 在工作中用sendMessage的方法向另外一个进程中传递窗体的位置,长度,宽度四个值,但是sendMessage的方法签名中只有两个参数.于是在网上找到了一些代码,找到了这个利用位运算来合并参 ...
- 利用位运算控制开关灯问题
<C++笔记> 利用位运算控制开关灯问题 新手上路,可能有很多不足的地方,欢迎大家多多在留言区提出自己的观点以及更好的办法. 问题描述:俱乐部一共有32盏灯,设计一个灯光控制系统,共有4部 ...
- java 不用中间变量_java异或运算不使用中间变量交换两个数(Java版)详细分解...
Java的异或运算^,这个小不点"^"就是Java的异或运算符,其特性如下:真^假=真假^真=真 假^假=假 真^真=假,它却是说明了Java异或运算的基本法则,那就是:只要两个条 ...
- c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)
用指针交换两个数: void swap(int *p,int *q) { int temp; temp = *p; *p = *q; *q = temp; } int main() { int a = ...
- C语言拆分一个三位数。以及交换两个数(常规法复习加指针法学习)
给一个三位数,要求拆分出百位十位,个位.然后输出. 以前我们在水仙花那次求水仙花数 提到过经典的取法 我们再次展示一下: #include<stdio.h> int main() {int ...
- 【java】java 如何不使用第三个变量来交换两个数的值
文章目录 1.概述 2.方案 2.1 算术运算 2.2 位运算 1.概述 今天是一个悲伤的一天,我的悲伤逆流成河.非常非常的悲伤.主要是有这个一个面试题.如何不使用第三个变量来交换两个数的值. 考官说 ...
- 详解交换两个数的五种思路
目录 •写在前面 •利用新变量 •利用加减法 •利用乘除法 •利用异或 •利用移位 •写在前面 交换两个数?听起来这不是很简单嘛,感觉没什么好讲的.不过这么想是因为很多时候都想简单了,没有把编程的巧妙 ...
最新文章
- 一堆棋子java代码编程_网易2018校招内推编程题-堆棋子-C++实现
- 分析USB平台设备模型框架(1)
- 中国计算机学会CCF推荐国际学术会议和期刊目录-软件工程/系统软件/程序设计语言
- 判断程序是否通过RFC运行
- DDG全家桶之3022
- 数据挖掘肿瘤预测_科研套路不嫌多,数据挖掘发3分
- 西安交大计算机技术考研初复试,西安交大计算机考研初试、复试信息
- 基于FPGA的RGB图像转 Ycbcr图像实现 gray图像
- arm体系结构与编程_ARM体系结构基础(1)
- java jackson 自定义_java – 自定义jackson解组行为
- java 线程修改数据库连接_如何强制Java线程关闭线程本地数据库连接
- 中国大学mooc 慕课 管理信息系统(同济大学) 第八章 电子商务 第九章 信息系统规划 习题 测试答案
- Coupled Layer-wise Graph Convolution for Transportation Demand Prediction
- 了解C语言中的exec函数家族
- java 通过onvif抓取海康摄像头图片
- Unity的lookRotation和lookAt的区别理解,是什么意思。
- BZOJ4622 [NOI 2003] 智破连环阵
- 学习进度2012-6-26(动态规划算法、Prim算法、Dijkstra算法)
- window.open打开新标签页面
- 2022年终几段晋升、述职等汇报文案参考