非常简单的遮罩
在 3 个操作中,如何将一个字节转换为与此匹配的 32 位 int:
0x1fffe
我一次只能显式访问一个字节,因此我从 0xFF 开始,然后对其进行移位。
我可以使用 4 次操作来完成,但我找不到一种方法来消除一次操作。
int mask2 = 0xFF << 8;
mask2 = mask2 | 0xFE;
mask2 = mask2 + mask2;
mask2 = mask2 | 0x02;
有什么想法吗?
换句话说,我需要一个掩码,0x1FFFE 在 3 次操作中生成,一次仅访问一个字节,如示例所示。
In 3 operations how can I turn a byte into a 32 bit int that matches this:
0x1fffe
I can only explicitly access a byte at a time thus I start with 0xFF and then shift it.
I can do it using 4 operations but I cant find a way to eliminate one operation.
int mask2 = 0xFF << 8;
mask2 = mask2 | 0xFE;
mask2 = mask2 + mask2;
mask2 = mask2 | 0x02;
Any ideas?
In other words, I need a mask, 0x1FFFE to be made in 3 operations while only accessing a byte at a time like the example.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
也许这就是您想要的...您从一个字节值(0xff)开始,然后通过3个按位运算对其进行处理,获得0x1fffe。
Maybe this is what you want... you start with one single byte value (0xff), and you work on it with 3 bitwise operations, obtaining 0x1fffe.
移位、加法、移位,这是三个操作,对吧?
<代码>((0xff << 8) + 0xff) << 1
shift, add, shift, that's three operations, right?
((0xff << 8) + 0xff) << 1
有两个操作:
with two operations:
怎么样:
这假设 32 位整数......
也许这更好地表达为:
How about this:
This assumes 32-bit integers...
Maybe that's better expressed as: