c++ 如何重置char变量的低4位?

1l5u6lss  于 2023-03-25  发布在  其他
关注(0)|答案(2)|浏览(130)

我在理解如何降低char变量的n位时遇到了一些问题
使用value〈〈4来执行它是否正确?
value | 0x0Fvalue & 0xF0

jyztefdp

jyztefdp1#

假设你在某处定义了一个char value;
因为你想将value的4个低位设置为零,你需要将AND的这些位设置为零,同时保持其他位不变(1 & 1 == 10 & 1 == 0):

value = value & 0xF0;

或更短

value &= 0xF0;

视觉帮助:

+--------------+------------------+
| value        | a b c d _ _ _ _  |
| 0xF0         | 1 1 1 1 0 0 0 0  |
| ------------ | ---------------- |
| value & 0xF0 | a b c d 0 0 0 0  |
+--------------+------------------+
4ngedf3f

4ngedf3f2#

假设value是一个8位char
value | 0x0F返回一个新值,保留高4位,低4位设置为1。

xxxxyyyy
OR 00001111
   --------
   xxxx1111

value & 0xF0返回一个新值,保留高4位,低4位设置为0。

xxxxyyyy
AND 11110000
    --------
    xxxx0000

value << 4返回一个新的值,其中所有的位都向左移动了4位,因此旧的高4位被丢弃,旧的低4位现在是新的高4位,而新的低4位是0。

xxxxyyyy
LSH 4
    --------
    yyyy0000

相关问题