4:将两个数进行亦或运算,也可以实现交换两个数的目的; 5:对两个数进行位操作,也可以实现交换两个数的目的。 接下来我将对后面三种进行分析: 前面两种太过常见,在此不做说明: 第三种:加减交换 将两个数之和赋值给第一个数,然后用新第一个数减去第二个数得到旧第一个数,并赋值给第二个数 ,再用新第一...
1、判断奇偶数 2、交换两个数字 基于异或运算的如下性质: 1.任意一个变量X与其自身进行异或运算,结果为0,即X^X=0 2.任意一个变量X与0进行异或运算,结果不变,即X^0=X 3.异或运算具有可结合性,即a^ b ^ c =(a ^ b)^ c = a ^(b ^ c) 4.异或运算具有可交换性,即a ^ b = b ^ a 为了...
但是浮点数是1位表示符号位,23位表示数值部分,8位其他表示指数部分。而整型只是单纯32位补码形式存放的,这就是位运算不能用于浮点数的原因。 1、“按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制进行“与”运算。如果两个相应的二进制位都位1,则该位的结果为1;否则为0。这里的1的可以理解为...
3.第三种 异或运算, 不创建临时变量 #include<stdio.h> #include<string.h> int main() { int a,b; scanf("%d%d",&a,&b); printf("变化前:a=%d b=%d\n",a,b); a=a^b; b=a^b; a=a^b; printf("变化后:a=%d b=%d\n",a,b); return 0; } 4.第四种 位运算 (2进制)注:不...
位运算是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 ,...
这里不介绍那么多了,以后有时间单独介绍这几种运算和常用的算法 那么本次要用的异或^,是对两个二进制中的数字的每一位对应数字进行判断,若两位不同,得出1,两位相同,得出0,即 利用这个性质,可以进行两数交换: a=a^b; b=a^b; a=a^b; 具体原理咱们可以不用深究,知道这个代表交换就可以,其实这个也是最好...
1、“按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1, 则该位的结果值为1;否则为0。这里的1可以理解为逻辑中的true,0可以理解为逻辑中的false。按位与其实与逻辑上“与”的运算规则一致。逻辑上的“与”,要求运算数全真,结果才为真。若, ...
在这个例子中,我们使用位运算符&来检测一个整数的奇偶性。如果整数与1进行位与运算后的结果为1,则说明该整数是奇数;否则,它是偶数。2.交换两个变量的值 这个例子展示了使用位异或运算符^来交换两个变量的值,而无需使用临时变量。通过多次异或操作,两个变量的值会互相交换。3.判断一个数是否为2的幂次方 ...
C语言交换两个数字的三种做法 1.借助中间变量法: 代码语言:javascript 复制 voidswap(int*a,int*b){int temp;temp=*a;*a=*b;*b=temp;} 2.使用加减法运算法: 代码语言:javascript 复制 voidswap(int*a,int*b){*a=*a+*b;*b=*a-*b;*a=*a-*b;} ...
- 获取一个数的第k位:只需将其右移k位后与1进行按位与操作即可,即n >> k & 1。说起理论来毕竟比较枯燥,我们来看两个应用的例子:这个示例的原理是利用了按位与运算符的特性,如果一个数是4的倍数,那么它的二进制表示中最低两位一定都是0,因为4的二进制表示是100,乘以任何整数后,最低两位都不会...