Побитовые операции: необходимо создать большое целое число, но можно объявить только 8-битное целое - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно создать большое целое число: (1431655765), то есть 01010101, для 4 байтов в целом. Однако есть ограничение, что мне разрешено объявлять число от 0 до 255. Я думал о том, чтобы объявить 01010101, а затем нажать его, используя << влево, а затем попытаться добавить больше 01 вдольпуть. Тем не менее, это приведет к тому, что первый байт будет таким, каким я его хочу, а не оставшиеся 3 байта, и я не уверен, как изменить значения 0 в других байтах. Я также подумал об использовании дополнения до двух, как-то сделать что-то негативное, используя ~ x + 1 или что-то подобное. Я не был уверен, как добраться туда только из одного байта целого числа, хотя. Я довольно застрял, и некоторая помощь будет оценена! Для контекста, это для побитовых операций, я могу использовать,! ~ & ^ |+ << >>

1 Ответ

0 голосов
/ 14 октября 2019

Если у вас есть числа a, b, c, d по 8 бит каждый, и они должны образовывать 32-битное число n = abcd, скажем, вы можете сделать:

n = a;
n = (n << 8) | b;
n = (n << 8) | c;
n = (n << 8) | d;
...