64 ビットの uint64_t 番号があります。
Primitive<uint64_t> b = 0xCCCCCCCC00000000;
最初の 31 (最も重要な) ビット - 7FFFFFFE を保存する必要があります。
インターネットでこの解決策を見つけました:
start = (((b)>>(first)) & ((1<<(((last+1)-(first))))-1));
しかし、このコードの私の場合:
Primitive<uint64_t> start = (((b)>>(32)) & ((1<<(((63+1)-(32))))-1));
エラーが表示されます: 左シフト カウント >= 型の幅
63 を 62 に変更しても、次のようになります。
Primitive<uint64_t> start = (((b)>>(32)) & ((1<<(((62+1)-(32))))-1));
私は得る:エラー:式の整数オーバーフロー
任意のヒント?ありがとう。