如何按位用另一个数字的位替换一个数字中的一系列位以进行递增,而不影响较低的位?

How to bitwise replace a range of bits in one number with the bits of another for incrementing, not affecting lower bits?

我有一个 16 位数字,LSB 4 位用作检查设置的位域,MSB 12 位用作递增的 number。 我知道 tempNum = (data_bits >> 4) 会让我从较大的 number 中脱颖而出。如果我想将 tempNum 递增 1,然后将其放回整个 16 位数字中作为替换而不影响低 4 位,我将如何做呢?我只想使用 bitwise 操作来做到这一点。

最简单的方法是从 4 位开始递增,即:

data_bits += 1 << 4;

低 4 位不变。