我想将一个整数的最后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 );