如何在没有实际计算的情况下获得正确的移位数?

时间:2017-09-20 15:15:20

标签: c++ c++11 bit-manipulation

我有以下代码段:

int n = 10;
int k = n>>1;
std::cout<<k;

这打印5。

我希望k是n的二进制表示中的最后一位数。 像bin(n)= 1010 所以,我希望k为0。

我知道很长的方法是可行的。如果可能,请建议一个班轮。

修改

在完成评论和回答后,我发现有各种方法可以做到这一点。

其中一些是:

k = n%2
k = n&1

感谢所有回答这个问题的人。 :)

2 个答案:

答案 0 :(得分:1)

=IF(FIND("quality",A80),SUBSTITUTE(A80,A80,"A quality life demands quality questions")," ")

更新:

我想补充说,c掩码并不罕见。我使用int来经常保持状态

int main( )
{
    unsigned int val= 0x1010;
    //so you just want the least siginificant bit?
    //and assign it to another int?
    unsigned int assign= val & 0x1;

    std::cout << assign << std::endl;
    val= 0x1001;
    assign= val & 0x1;
    std::cout << assign << std::endl;
    return 0;
}

然后:

#define STATE_MOTOR_RUNNING     0x0001
#define STATE_UPDATE_DISPLAY    0x0002
#define STATE_COUNTER_READY     0x0004

答案 1 :(得分:0)

您无法避免某些计算。

int k = n % 10;

会得到最后一个十进制数字,因为该赋值给k除以10的余数。