gpt4 book ai didi

c - 在 C 中确定数组元素是否为非负的快速技巧?

转载 作者:行者123 更新时间:2023-12-03 15:27:00 25 4
gpt4 key购买 nike

我正在写一个函数

int are_non_negatives(int* start, int n) {
...
}
如果所有下一个 n,此函数返回 1数组中的整数 start是非负的。否则返回 0。
我的问题是是否存在尽可能快地执行此操作的技巧(除了循环和检查每个位置)?
脏/非可移植技巧很好。我也想知道这些。谢谢!

最佳答案

在需要检查所有元素的最坏情况下,您可以利用一个稍微“脏/不可移植”的技巧:在 2 的补码 int 表示中,当且仅当值为负时设置最高位。因此,您可以按位或将它们全部按位并检查最高位。这可以使用 vector 指令一次完成一批,例如假设 32 位 int 和 256 位 AVX 指令,一次 8 个元素。

关于c - 在 C 中确定数组元素是否为非负的快速技巧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66146327/

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