gpt4 book ai didi

c - C程序的运算符&~31

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

我想从这段代码中询问有关 C 运算符的问题。 friend 问了,没见过这个算子:

binfo_out.biSizeImage = ( ( ( (binfo_out.biWidth * binfo_out.biBitCount) + 31) & ~31) / 8) * abs(out_bi.biHeight);

这个运算符 & ~31 是什么意思?谁能解释一下?

最佳答案

& 运算符是按位与。 ~ 运算符是按位非(即反转位)。由于 31 是二进制 11111,~31 是二进制 1111111....111100000(即一个全为 1,但末尾有五个零的数字)。因此,将一个数字与此相加会清除最低有效的五位,这(如果您考虑的话)会向下舍入为 32 的倍数。

整个事情是做什么的?请注意,它首先添加 31。这会导致整个事情向上舍入到下一个 32 的倍数。

这可能用于计算(例如)如果您只能使用 32 位数量来存储某些内容,将使用多少位来存储它们,因为最后 32 位会有些浪费数。

关于c - C程序的运算符&~31,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22117219/

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