在3个操作中,如何将一个字节转换为与此匹配的32位int:
0x1fffe
我一次只能显式访问一个字节,因此我从0xFF开始,然后将其移位。
我可以使用4个操作来完成它,但我找不到消除一个操作的方法。
int mask2 = 0xFF << 8;
mask2 = mask2 | 0xFE;
mask2 = mask2 + mask2;
mask2 = mask2 | 0x02;
有什么想法吗?
换句话说,我需要一个掩码,0x1FFFE可以在3次操作中进行,而一次只能访问一个字节,就像示例一样。
答案 0 :(得分:2)
也许这就是你想要的......你从一个字节值(0xff)开始,然后使用3 按位操作来处理它,获得0x1fffe。
int in = 0xff;
int out = in<<9 | in<<1;
答案 1 :(得分:2)
转移,添加,转移,这是三个操作,对吗?
((0xff << 8) + 0xff) << 1
答案 2 :(得分:1)
有两个操作:
res = (1 << 17) - 2
答案 3 :(得分:0)
int mask2 = 0xFF;
mask2 |= mask2 << 8;
mask2 += mask2;
答案 4 :(得分:0)
这个怎么样:
((~0xffU) >> 11) - 1
这假定为32位整数......
也许这更好地表达为:
uint32_t x = 0xff;
x = ~x;
x >>= 11;
x -= 1;