如何按位用另一个数字的位替换一个数字中的一系列位以进行递增,而不影响较低的位?
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 位不变。
我有一个 16 位数字,LSB 4 位用作检查设置的位域,MSB 12 位用作递增的 number
。
我知道 tempNum = (data_bits >> 4)
会让我从较大的 number
中脱颖而出。如果我想将 tempNum
递增 1,然后将其放回整个 16 位数字中作为替换而不影响低 4 位,我将如何做呢?我只想使用 bitwise
操作来做到这一点。
最简单的方法是从 4 位开始递增,即:
data_bits += 1 << 4;
低 4 位不变。