gpt4 book ai didi

objective-c - 位图行宽的奇怪按位运算,这是什么意思? (以及为什么)

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

开发人员添加一个十六进制值 16,然后在这一行中使用按位运算 AND 后跟一个 NOT 是什么以及为什么:

size_t bytesPerRow = ((width * 4) + 0x0000000F) & ~0x0000000F;

他评论说“16 字节对齐很好”,这是什么意思?

 - (CGContextRef)createBitmapContext {
CGRect boundingBox = CGPathGetBoundingBox(_mShape);

size_t width = CGRectGetWidth(boundingBox);
size_t height = CGRectGetHeight(boundingBox);
size_t bitsPerComponent = 8;
size_t bytesPerRow = ((width * 4) + 0x0000000F) & ~0x0000000F; // 16 byte aligned is good

最佳答案

ANDing with ~0x0000000F = 0xFFFFFFF0(又名 -16)四舍五入为 16 的倍数,只需重置那些可能使其成为 16 的倍数(8、4 , 2 和 1)。

首先加上 15 (0x0000000F) 使其向上舍入而不是向下舍入。

关于objective-c - 位图行宽的奇怪按位运算,这是什么意思? (以及为什么),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986184/

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