【发布时间】:2018-02-14 08:36:32
【问题描述】:
我目前正在处理一项编程任务,其中我必须仅屏蔽整个 32 位数字的某个索引(例如:如果我将 8 个 4 位数字放入我的 32 位整数中,我将有 8 个每个索引有 4 位)。我希望能够仅打印整个 32 位中的一部分位,这可以通过屏蔽来完成。如果这些位只在一个地方,我不会有问题,因为我只会创建一个掩码,将 1 放在一个固定的位置(例如:00000000 00000000 00000000 00000001)。但是,我需要能够仅在一个索引中移动掩码以打印每个位(例如:我想用我的 0001 掩码循环通过第一个索引,每次将 1 向左移动,但我不想在之后继续该索引的第三位)。我知道我需要一个循环来完成这个;但是,我很难思考如何完成这部分作业。任何提示、建议或更正将不胜感激。另外,如果这很难理解,我很抱歉,但我找不到更好的表达方式。谢谢。
【问题讨论】:
-
这是用什么语言写的? (C、C++、JavaScript、...)。一般来说,您可以结合 AND 掩码进行移位操作(0xabcd>>4 & 0xf 将给您 0x0c)。
-
它在 C++ 中.....
-
我想在移位的同时使用掩码和按位与运算符,但我只是对如何创建一个将随着我的输入更改位的掩码感到困惑。例如:如果我需要一个四位索引的掩码,我会制作 1111,但如果我需要一个两位索引的掩码,那么我必须制作 11。
-
考虑按位左移运算符(或乘以 2)
标签: c++ bit-shift bits bitmask