我们从低位开始加起,首先第0位为0+0=0;第一位1+1=0,如果是加号运算符,则需要进位,但由于是异或运算(半加),故不用进位,第二位为1+0=1;最后一位为1+1=0。最终结果就是0100,这就是半加的过程。 特性 1.一个数与0进行异或运算,其运算结果是自身; 2.一个数与自身进行异或运算,其运算结果为0; 3....
3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12) main(){ int a=9; a=a^15; printf("a=%d/n",a); } 4. 求反运算 求...
异或运算符的作用: 1. 指定位数的翻转: 如想对某个数字的低4位进行翻转,则可以将这个数字与15(二进制为00001111)进行按位异或运算,既可以将原数字的低四位进行翻转,即高四位不变,低四位0变1,1变0。 2. 与0异或还是原值: 大家可以自行实验,一个数字与0进行异或,结果还是原值。
unsigned int value = 0b10101010; // 假设有一个值unsigned int mask = 0b00001000; // 创建一个掩码,用于检查第4位if (value & mask) {printf("第4位被设置了\n");} else {printf("第4位未被设置\n");} 2 重置特定位: 通过创建一个对应位为0的掩码,并与原数进行按位与运算,可以清除原数...
C语言学习笔记:异或 个人学习笔记 ①按位异或可以用来使某些特定的位翻转,如对数10100001的第1位和第2位翻转,可以将数与00000110进行按位异或运算。 10100001 ^ 00000110 = 10100111 ②通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。 例如交换两个整数a,b的值,可通过下列语句实现:...
4.位操作符 ==按位与&==,两个数字均为1,才为真(1) ==按位或|==,只要有1,则为真(1) ==按位异或^==, 相同为0,相异以1 一道变态的==面试题== 用临时变量 用加法,有BUG,会==溢出==(int) 用位异或,比较==靠谱== 练习:编写代码实现:求一个整数存储在内存中的二进制中==1的个数== 5. ...
C语言基础之位运算(二) C语言基础之位运算(三) 内存存储的基本单位 1和 0是计算机存储的基本单元,在计算机设备中看到的所有一切都是1和0两个数组成的,一个即一个位,即二进制中的一个数位,8位(bit)一个字节;反过来说,就是1字节是8位的数据,可以表示0-255共256个数字,即1Byte(字节) = 8Bit(位)。
使得一位或几个位为1 : X | 0X01(使最低位为1) 把两个数拼起来 : 0X00FF | 0XFF00 = 0XFFFF 3.按位异或运算 按位异或运算符“”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1,否则为0。参与运算数仍以补码出现,例如95可写成算式如下: ...
位操作是C语言中一项强大的技术,它允许程序员直接对整数的二进制位进行操作。这种操作对于优化性能、实现特定算法以及硬件层面的交互至关重要。本文将介绍C语言中位操作的基础知识和一些实际应用,并提供示例代码。 1. 位操作符 C语言提供了多种位操作符,用于执行按位与(&)、按位或(|)、按位异或(^)、按位取反...
(2)和0做异或保持原值不变,和1做异或得到原值的相反值 (4)利用位运算可以这样做交换 五、条件运算符 六、sizeof运算符与typedef类型声明 1.sizeof 表达式 2.sizeof (类型名):求一个数组的长度 ...