#define XL 33
#define OR 113
#define NOR 313
#define TN 344
int to_bits(int critn,char *mask)
{
unsigned int x;
int begin;
if (critn < XL) begin = 1;
else if (critn < OR) begin = XL;
else if (critn < NOR) begin = OR;
else if (critn <= TN) begin = NOR;
else begin = 0;
x = critn - begin;
*mask = (char)(0x80 >> (x % 8));
return (int)(x >> 3); // fast divide by 8
}
我对 C++ 代码一无所知。任何人都可以在最后两行中解释此方法的作用吗?
谢谢
最佳答案
最后两行是位移。
掩码采用 0x80 并将其移动(x 到 8 的模数)位置,例如 5 >> 2 将为您提供 1。
x >> 3 就像它所说的那样,将它除以 8,它取 x 并将所有位向右移动 3 个位置(即 1、2、4),结果 8 将变为 1 等。它有点像整数 div,但会更快(如评论所说,快速除以 8)
关于c++ - 解释下面的C++方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562502/