Luu*_*ter 2 c bit-manipulation
我想将一个整数的最后4位设置为另一个整数。
因此,例如,你有这样的INT: 1100 0001。我只希望用另一个INT例如更改后四位:0000 0110。所有其他位应保持不变,并且必须在一个语句中(对我的可怕解释深感抱歉)。
以下陈述确实有效,但似乎是不正确的做法,并且仅适用于 uint8_t
unint8_t count = 6; //0000 0110
PORTC = ((PORTC >> 4) << 4) | count; //PORTC = 1100
Run Code Online (Sandbox Code Playgroud)
PORTC的结果就是1100 0110,这就是我想要的,但是我希望它可以与任何整数一起使用。这样做的另一种(更好)方法是什么?
注意:它必须是一个声明。
首先,您需要使用设置了4个最低位以外的所有掩码的目标与,然后将其与第一个数字的最低4位进行屏蔽或。
PORTC = (PORTC & ~0xfULL) | ( count & 0xf );
Run Code Online (Sandbox Code Playgroud)