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

Dim*_*ing -1 c bit-manipulation bit bitwise-operators

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

dbu*_*ush 5

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

data_bits += 1 << 4;
Run Code Online (Sandbox Code Playgroud)

这使低 4 位保持不变。