(311&255)在C++中是什么意思?

What does (311&255) mean in C++?

本文关键字:是什么 意思 C++      更新时间:2023-10-16

语句"(311&255)"在C++中是什么意思?当第二个数字是2的幂而不是任何数字时,它与加快内存访问有何关系?

运算符是一个二进制的逐位运算符,在(311 & 255)等表达式中使用时可用于实现"位屏蔽"。

311是100110111。当您用255(二进制为11111111)执行AND运算时,结果是将位7左侧的任何位设置为零。在这种情况下,结果是00110111——最高有效位被设置为0。这就是当一组比特被用来"屏蔽"另一组比特时所指的。

  100110111
& 011111111
-----------
  000110111

在计算内存地址时经常使用这种操作,因为缓存和内存总线通常是按照两次方大小对齐的,这意味着当你访问一个二次方的地址时,你会将更多的内存块放入缓存中,并且需要更少的内存总线访问来获取它,软件设计者(即您)必须在意识到这一事实的情况下规划内存分配。

如果你想负责这个级别的内存,那么确切地知道你的硬件是做什么的是个好主意。