0

我正在研究以下功能:

inline xint dtally(xint x)
{
    xint t = 0;
    while (x) t += 1 << ((x % 10) * 6), x /= 10;
    return t;
}

我只想知道是什么让这个特性,即计算和存储在变量中t

4

1 回答 1

2

这会计算 中的数字中以 10 为基数的位数xt由 6 位宽度的位字段分隔。

请注意,每个移位长度是 6 的倍数。因此,如果数字为 0,则移位为 0,如果数字为 1,则移位为 6,如果数字为 9,则移位为 54,依此类推。

我认为使用 6 的原因是它适合 64 位以下。

于 2014-11-29T03:44:31.793 回答