gpt4 book ai didi

c - 如何以更优化的方式提取位?

转载 作者:太空狗 更新时间:2023-10-29 16:58:00 24 4
gpt4 key购买 nike

我今天接受采访,他们要求我编写两个“C”函数,一个用于提取单个位,另一个用于从字符中提取一系列位。我花了一段时间想出了这些方法。

int extractBit(char byte, int pos) {
assert( (pos >= 0) && (pos < 8) );
return ( ( byte & (1<<pos) ) >> pos);
}
char extractBitRange(char byte, int startingPos, int offset) {
assert( ( (startingPos + offset) >= 0) && ( (startingPos + offset) < 8) );
return ( byte >> startingPos ) & ~(0xff << (offset + 1));
}

但面试官一直问我是否可以进一步加快代码速度(在 cpu 周期方面),以及是否有任何优化范围可以实现它。我显然心情不好,我很想知道你会怎么做?

最佳答案

在 extractBit 中,如果你先移动,你可以用 1 屏蔽而不是 (1<<pos) .考虑到 pos 是函数的参数,这样可以节省计算量。

return (byte >> pos) & 1;

在第二个函数中,我会断言 startingPosoffset两者都是正的,而不是断言它们的总和是正的,这样更有意义。

关于c - 如何以更优化的方式提取位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516301/

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