понимание побитовой операции - PullRequest
0 голосов
/ 21 апреля 2020

Может кто-нибудь объяснить, что сдвиг битов и оператор ИЛИ делает в этом C коде? Спасибо!

Редактировать: Спасибо за ответы. Я воспользовался советом jabberwocky и обновил вывод

int size;
unsigned int buffer4 ,buffer3,buffer2,buffer1;
buffer4 = 132;
buffer3 = 50;
buffer2 = 8;
buffer1 =0;

printf("%08x %08x %08x %08x\n", buffer4, buffer3, buffer2, buffer1); //Hex: 
printf("%08x %08x %08x %08x\n", buffer4, buffer3<<8, buffer2<<16, buffer1<<24); //Hex Shifted: 

printf("%08d %08d %08d %08d\n", buffer4, buffer3, buffer2, buffer1); //Integer
printf("%08d %08d %08d %08d\n", buffer4, buffer3<<8, buffer2<<16, buffer1<<24); //Integer Shifted: : 

size = buffer4 | (buffer3 <<8) | (buffer2<<16) | (buffer1 <<24);

printf("%08x\n",size);
printf("%d\n",size);

:

00000084 00000032 00000008 00000000
00000084 00003200 00080000 00000000
00000132 00000050 00000008 00000000
00000132 00012800 00524288 00000000
00083284
537220

Все побитовые операции имеют смысл для меня, но откуда взялся 537220? Я должен пропустить конверсию.

...