Я ищу элегантный C++, использующий SystemC для конкатенации бит.concatenate bits C++
примерСистема Verilog в одной хорошей линии:
bool my_variable;
uint bits_combination = {8'b0, {8{my_variable}}, 8'b1, 4'b0, 2'b1, 2'b0};
Мой лучшее решение для C++:
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
ли остальные биты постоянными? Uint в примере системы verilog имеет 34 бита? Если остальное не изменится, используйте ли его как маску и/или (255 << 16), если моя переменная истинна? –