我想将一个整数的最后4位设置为另一个整数。

例如,您有一个int:1100 0001。我只想用另一个int来更改最后四位,例如:0000 0110。所有其他位应保​​持不变,并且必须在一个语句中(对我的可怕解释深感抱歉)。

以下语句确实有效,但似乎是不正确的做法,并且仅适用于uint8_t

unint8_t count = 6; //0000 0110
PORTC = ((PORTC >> 4) << 4) | count; //PORTC = 1100


PORTC的结果是1100 0110,这就是我想要的,但是我希望它可以与任何整数一起使用。这样做的另一种(更好)方法是什么?

注意:它必须是一个声明。

最佳答案

首先,您需要将目标号码与设置了4个最低位(除最低位之外)的掩码进行“与”运算,然后再与第一个数字的最低4位进行屏蔽或。

PORTC = (PORTC & ~0xfULL) | ( count & 0xf );

08-15 21:52