我需要根据用户提供的数字找出掩码值。
例如。如果用户提供输入
22(二进制10110)
然后我需要通过将输入的高位更改为1
并休息到0
来找到掩码值。
所以在这种情况下它应该是:
16(二进制10000)
是否有c
语言的内置方法可以这样做。
答案 0 :(得分:1)
你可以计算出最高位的位置
一旦你拥有它,只需向左移动以获得正确的掩码值:
def organize_data(df):
rng = int(input('How many peptides do you have to analyze: '))
df1 = df.columns.to_series().str.extract('([a-zA-Z]+)(\d+)', expand=True)
df1[1] = df1[1].astype(int)
df.columns = df1.T.values.tolist()
df = df.sort_index(level=1, axis=1)
df2 = df.loc[:, df.columns.get_level_values(1) <= rng]
df2.columns = [''.join((x[0], str(x[1]))) for x in df2.columns]
return df2
a = organize_data(df)
print (a)
这将 unsigned int x = 22;
int result = 0;
if (x != 0)
{
unsigned int y = x;
int bit_pos=-1;
while (y != 0)
{
y >>= 1;
bit_pos++;
}
result = 1<<bit_pos;
}
设置为result
(如果输入的值为16
),则会出现特殊情况
答案 1 :(得分:0)
基本上,您需要将最小功率对齐到两个数字。我不确定是否有标准功能,但请尝试以下方法:
static inline uint32_t
floor_align32pow2(uint32_t x)
{
x |= x >> 1;
x |= x >> 2;
x |= x >> 4;
x |= x >> 8;
x |= x >> 16;
return (x >> 1) + (x & 1);
}