私はエレガントなC + +を探していますSystemCを使用してビットを連結する。 C++のためのビットを連結するC++
bool my_variable;
uint bits_combination = {8'b0, {8{my_variable}}, 8'b1, 4'b0, 2'b1, 2'b0};
私の最善の解決策:1つの素敵なラインで
AシステムVerilogの例
bool my_variable;
sc_uint<32> bits_combination;
bits_combination.range(31,24) = 0;
bits_combination.range(23,16) = my_variable ? (1 << 8)-1 : 0;
bits_combination.range(15,8) = (1 << 8)-1;
bits_combination.range(7,4) = 0;
bits_combination.range(3,2) = (1 << 2)-1;
bits_combination.range(1,0) = 0;
はこのラインを改善する非三項演算子も役立ちますに:
my_variable ? (1 << 8)-1 : 0
を
は、一定のビットの残りの部分はありますか?システムのVerilogサンプルのuintは34ビットですか?残りが変更されない場合はマスクとして、または変数がtrueの場合は(255 << 16)にします。 –