Побитовые операции(код)
#include<conio.h>
#include<stdio.h>
#include<cstdlib>
int main()
{
unsigned short z, c, v=0;
int x;
x= rand()%16;
v=(z << x) || ();
printf("x = %d\n",x);
printf("V = %i\n",v);
getch();
return 0;
}
Помогите исправить код, нужно заполнить два 16-битовые числа z и c. После взять число x, случайную точку разрыва, от 0 до 16. И заполнить число v таким образом, чтобы до случайного числа было z, после - с. Пример: случайное число 4 => v=zzzzcccccccccccc;
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Попробуйте так:
unsigned short mask = 0xFFFF << (16-x);
v = (z&mask)|(c&~mask);
Если, конечно, имеется в виду, чтобы в v были соответствующие биты z и c.
zzzzzzzzzzzzzzzz
||||
vvvv
zzzzcccccccccccc
^^^^^^^^^^^^
||||||||||||
cccccccccccccccc