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

これは、 6 幅のビット フィールドで区切られxた、 の数値の基数 10 の桁数をカウントします。t

各シフト長は 6 の倍数であることに注意してください。したがって、数字が 0 の場合、シフトは 0、数字が 1 の場合、シフトは 6、数字が 9 の場合、シフトは 54 などです。

6 を使用する理由は、64 ビット以下に収まるようにするためだと思います。

于 2014-11-29T03:44:31.793 に答える