非常简单的遮罩

发布于 2024-12-03 08:45:36 字数 372 浏览 2 评论 0原文

在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

朕就是辣么酷 2024-12-10 08:45:36

也许这就是您想要的...您从一个字节值(0xff)开始,然后通过3个按位运算对其进行处理,获得0x1fffe。

int in = 0xff;
int out = in<<9 | in<<1;

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.

int in = 0xff;
int out = in<<9 | in<<1;
煮茶煮酒煮时光 2024-12-10 08:45:36

移位、加法、移位,这是三个操作,对吧?

<代码>((0xff << 8) + 0xff) << 1

shift, add, shift, that's three operations, right?

((0xff << 8) + 0xff) << 1

完美的未来在梦里 2024-12-10 08:45:36

有两个操作:

res = (1 << 17) - 2

with two operations:

res = (1 << 17) - 2
尴尬癌患者 2024-12-10 08:45:36
int mask2 = 0xFF;
mask2 |= mask2 << 8;
mask2 += mask2;
int mask2 = 0xFF;
mask2 |= mask2 << 8;
mask2 += mask2;
爱你是孤单的心事 2024-12-10 08:45:36

怎么样:

((~0xffU) >> 11) - 1

这假设 32 位整数......

也许这更好地表达为:

uint32_t x = 0xff;

x = ~x;
x >>= 11;
x -= 1;

How about this:

((~0xffU) >> 11) - 1

This assumes 32-bit integers...

Maybe that's better expressed as:

uint32_t x = 0xff;

x = ~x;
x >>= 11;
x -= 1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文