如何从数字中提取第一,第二和第三位?

问题描述 投票:0回答:2

我想知道是否可以不使用遮罩来执行此操作?

带面具的样子:

int a=125;
mask=0b1110;
int A=a&mask;

但是我不知道如何使用移位和其他按位操作来做同样的事情

c bit-manipulation bitwise-operators
2个回答
0
投票

这里是怎么做:

int a = 125;
int A = (((a >> 2U) & 1) << 2U) | (((a >> 1U) & 1) << 1U) | (a & 1);

0
投票

如果计算机上的int是32位,则可以这样做:

int a = 125;
int A = (a<<29)>>29;

但仅当a为正时有效

© www.soinside.com 2019 - 2024. All rights reserved.