gpt4 book ai didi

c - 这 3 行 C 代码到底做了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 05:30:01 25 4
gpt4 key购买 nike

几天来我一直在尝试解析它们,但我不太理解。他们在这里:

int left = S->buflen >> 3;
int fill = 64 - left;
if(left && (((datalen >> 3) & 0x3F) >= (unsigned)fill)){
some code here
}

如果有帮助,这在 SHA-3 候选 BLAKE256 的引用实现中。

最佳答案

没有 bitops 的替代方案可能有助于阐明含义:

int left = S->buflen / 8;
int fill = 64 - left;
if (left != 0) {
int tmp = datalen / 8;
if ((tmp % 64) >= (unsigned)fill) {
/* Some code here */
}
}

这当然假设 buflendatalen 是非负数,因为右移运算符对负数具有平台相关的行为。

关于c - 这 3 行 C 代码到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493411/

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