there is almost certainly a better way to do the mask in the multishifter: a binary to unary encoder followed by treating that as a 24-bit integer and subtracting 1 would create the desired output: 000001 for an input of "0b1", 0000011 for an input of "0b10", 000111 for an input of "0b11" and so on.