gpt4 book ai didi

c++ - 隔离字符中的 1 字符串

转载 作者:行者123 更新时间:2023-11-28 00:47:45 24 4
gpt4 key购买 nike

我需要想出一个函数,它接受一个字符和其中设置位的索引,并分离出包含该位的 1 字符串。

char isolate(unsigned char arg, int i);

例如:

isolate(221,2) 将返回 28 (11011101 >>> 00011100)

isolate(221,6) 将返回 192 (11011101 >>> 1100000)

查找表似乎是一个笨拙的解决方案,因为它需要 ~256*8=2048 个条目。

我正在考虑检查索引左侧和右侧的每个位:

char isolate(char arg, int i)
{
char result=0;
char mask = 1<<i;
for(char mask = 1<<i; arg & mask != 0; mask>>=1)
result |= mask;
for(char mask = 1<<i; arg & mask != 0; mask<<=1)
result |= mask;
return result;
}

不过也显得有点丑。我怎样才能做得更好?

最佳答案

这是一个有趣的操作。您编写的代码很好地表达了它,所以您介意详细说明它有多丑吗?

我能看到的细节:鉴于 iarg 中表示一个位数,i 是一个更宽的类型绝对没有意义.在条件中编写 != 0 从来没有意义。您可能不想在使用掩码的任何地方都重新声明它,也不想连续两次初始化它。

至于实际的扩展位掩码,我现在想不出一种更具表现力、更清洁或更高效的方法。

关于c++ - 隔离字符中的 1 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604426/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com