【问题标题】:What does the ^= operator do?^= 运算符有什么作用?
【发布时间】:2022-01-16 11:07:26
【问题描述】:

您好,我想知道是否有人可以解释 ^= 运算符在这个 c 程序中的作用?该程序是为 arm 架构编写的。

#include <stdint.h>
#include <pru_cfg.h>

volatile register uint32_t __R30;
volatile register uint32_t __R31;

void main() {
    volatile uint32_t gpo;

    /* Clear GPO pins */
    gpo = (__R30 & 0xFFFF0000);
    __R30 = gpo;
    
    while(1) {
        gpo = __R30;
        gpo ^= 0xF;
        __R30 = gpo;
        __delay_cycles(100000000); // half-second delay
    }
}

如果您需要任何其他信息,请告诉我,谢谢

【问题讨论】:

    标签: operators


    【解决方案1】:

    在 C 中,^ 是按位的exclusive or,并且

    gpo ^= 0xF;
    

    等价于

    gpo = gpo ^ 0xF;
    

    更多详情请见https://en.cppreference.com/w/c/language/operator_assignment#Compound_assignment

    【讨论】:

    • 也许更具体的解释是它只会切换低四位会增加一些东西。在较长的形式中表达它是一种更简洁的方式。过去,它会生成更高效的代码,但通常,gpo = gpo ^ 0xf; 与任何现代编译器(使用 SSA)一样高效。
    猜你喜欢
    • 1970-01-01
    • 2014-08-07
    • 2020-07-21
    • 2017-10-26
    • 2012-10-03
    • 2011-08-19
    • 2010-09-14
    • 2013-08-19
    • 2011-01-24
    相关资源
    最近更新 更多