2022-01-11 14:43:19|已浏览:176次

1、一个数和自己做异或的结果是0。如果需要一个常数0,x86平台的编译器可能会生成这样的指令:xorl %eax, %eax。不管eax寄存器里的值原来是多少,做异或运算都能得到0,这条指令比同样效果的;movl $0, %eax指令快,直接对寄存器做位运算比生成一个立即数再传送到寄存器要快一些。
2、从异或的真值表中可以看出,和0做异或保持原值不变,和1做异或得到原值的相反值。可以利用这个特性配合掩码实现某些位的翻转,例如:1.unsigned int a, b, mask = 1U << 6; 2.a = 0x12345678; 3.b = a ^ mask; /* flip the 6th bit */C语言中若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换,如:a=a^b;b=a^b;a=a^b;这样就完成了a与b的交换。
本文由培训无忧网达内教育专属课程顾问老师整理发布,更多C语言课程信息可关注培训无忧网C语言培训频道或添加老师微信:15033336050
注:尊重原创文章,转载请注明出处和链接 https://www.pxwy.cn/news-id-14645.html 违者必究!部分文章来源于网络由培训无忧网编辑部人员整理发布,内容真实性请自行核实或联系我们,了解更多相关资讯请关注c语言频道查看更多,了解相关专业课程信息您可在线咨询也可免费申请试课。关注官方微信了解更多:150 3333 6050