2

ユーザーは関数のパラメータとして整数を使用してレジスタ (LFSR) の長さを指定します。たとえば、5 を入力します。この 5 ビット長の LFSR をすべて 1 のビット (長さ 5 の場合は11111) で初期化し、シード マスクを取得する必要があります。フォーマットでは、uint32_t長さ 5 のレジスタの場合は になります0x0001f

0x0001fユーザーが整数 5 としてレジスタの長さのみを入力したときに、5 ビット長のレジスタのマスクを取得する最良の方法は何ですか?

4

2 に答える 2

2

別のオプションは

std::uint32_t mask = ~(~0U << n);

またunsigned int、システムが 32 ビット以上であることを確認する必要があります。

std::uint32_t mask = ~(~(std::uint32_t)0 << n);
于 2015-06-25T11:59:33.303 に答える