Допустим, у нас есть две переменные типа int, A
и B
битовой длины N < 16
и M < 16
соответственно.
Нам нужна новая переменная int C
, чтобы младшие биты N
содержали биты A
, а следующие M
биты содержали биты B
. (Предполагая, что все переменные имеют длину 32 бита и порядок байтов).
В моем решении я слегка обманул, используя вместо этого двоичные строки:
int a = 65535;
int b = 65;
String cStr = Integer.toBinaryString(b) + Integer.toBinaryString(a);
int c = Integer.parseInt(cStr, 2);
Но как мне сделать это, используя побитовые операторы?
Примеры:
A=1, B=1 (N=1, M=1 resp.) then C = 11
A = 11000011010100, B = 101100 (N=14, M=6 resp.) then C = 10110011000011010100