在c ++中使用AND短路

0 c++

我如何编写一段代码来表示短路的第一个字节,而不是第二个部分?

Eaxmple:我有一个名为inputShort的short,我希望这个short能够删除第二个字节中的所有值.所以我想和逻辑运算符一起使用它.

好吧,我试过了,但我失败了.有人能给我一个例子如何做到这一点?

我的目标是保持短线的左侧部分,并清空短线的右侧部分.

gnu*_*nud 7

当你说"第二个字节"时,我不知道你的意思是最重要还是最不重要,但这里有一个可能有帮助的例子.

short second = 0xFF00;
short first = 0x00FF;
short number = 0x1234;
short tmp;

tmp = number & first; //tmp is set to 0x1234&0x00FF -> 0x0034
tmp = number & second; //tmp is set to 0x1234&0xFF00 -> 0x1200
Run Code Online (Sandbox Code Playgroud)


Ste*_*sop 7

"第一"和"第二"是模棱两可的.他们倾向于提到存储,所以endian-ness发挥作用,我认为你不是那个意思.短路中的字节数也是实现定义的.

我假设您要将最低有效("右")位清零,并保留所有其他位:

#include <limits>

...

inputShort & ~std::numeric_limits<unsigned char>::max();
Run Code Online (Sandbox Code Playgroud)

或者,如果你感到勇敢,并且你想假设8位字节:

inputShort & ~0xFF;
Run Code Online (Sandbox Code Playgroud)

(假设8位字节不需要太多勇气).