Упаковка и распаковка информации.

Пример 1:

Упаковка, или сжатие информации. В двухбайтную переменную unsigned short r (16 бит) запишем 16/2=8 чисел из диапазона 0..3.

Решение от преподавателя:

unsigned short P (unsigned short mymax,unsigned short shift, unsigned short n )

{ randomize(); unsigned short num, r=0;

for (int j=1; j<=n; j++)

{ r<<=shift; // или r=r<

num=random(mymax+1); cout<

r |= num; // или r+= num;

} return r;

}

void main()

{ unsigned short R= P(3, 2, 8); printf(" \n % x % d",R, R);

getch();

}

Пример 2:

Распаковка. Как из числа r, в котором хранятся восемь чисел из диапазона 0..3, “взять” каждое из них и вывести?

Решение от преподавателя:

void UnPark (unsigned short r,

unsigned short shift, unsigned short n)

{ unsigned Maska=0xC000, k=14;

for (int j=1; j<=n; j++,k –=2, Maska>>=shift)

{ short num= (r & Maska)>>k;

cout<

}

void main()

{ unsigned short R= P(3, 2, 8); /* Функцию P см. в примере 11 */

printf(" \n % x % d\n",R, R); UnPark(R,2,8);

getch();

}

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!

Заполните, пожалуйста, данные для автора:

  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн