Вам необходимо скрыть типы, чтобы значения могли содержать 8 бит (символ или uint8 подойдут в зависимости от того, что вам нужно).Я не уверен, какой тип у вас там, как его 4 бита.Вам лучше переопределить тип как uint8 или что-то в этом роде, так что [0] = 0b00001011.
Если у вас есть нужное количество бит, необходимо сдвинуть первое значение влево на 4, а затем использовать побитовоеОператор ИЛИ, на вашем примере,
int8 myValue = a[0] << 4 | a[1]
Вот что происходит
- Сдвиг: a [0] << 4 означает перемещение каждого бита влево 4 раза, поэтому 0b00001011 становится0b10110000 (биты, входящие в правильное значение по умолчанию как 0) </li>
Побитовое ИЛИ: a [0] << 4 |[1], |сравнивает каждый бит из [0] с [1].Если один из битов равен 1, он дает 1, если оба равны 0, он дает 0, то есть </p>
10110000 |00001111 = 10111111
В обратном порядке я предполагаю, что вы имеете в виду обратное?
Вам нужно будет использовать битовое И &, и сделатьчто-то подобное, поэтому я не буду подробно объяснять снова, но это это
a[0] = (myValue & 0b1111000) >> 4 = 00001011
a[1] = myValue & 0b00001111 = 00001111
Надеюсь, что помогает.