Stari Cinane meli zvlastni predstavu, ze symbol Yin-Yang vyjadruje
nejzakladnejsi podstatu vesmiru. Domnivam se, ze tato predstava je v poradku.
Symbol vyjadruje nulu a jednicku. Nula a jednicka jsou nejmensi mnozinou
symbolu, ktera je potreba k tomu, aby vznikl uchvatny zjev, ktery dal vzniknout
nasemu vesmiru a ktery se jmenuje informace.

Tento text se venuje nulam a jednickam a jeho cilem je ukazat zlomky jejich
skryte krasy.

Uloha cislo 0
-------------

Urcete, zda cislo je mocninou dvojky.

Reseni: a&(a-1).

Uloha cislo 1
-------------

Zjistete pocet nastavenych bitu ve 32-bitovem cisle.

unsigned a; /* vstup */
a=((a&0x55555555)>>1)+(a&0xaaaaaaaa);
a=((a&0xcccccccc)>>2)+(a&0x33333333);
a=((a&0xf0f0f0f0)>>4)+(a&0x0f0f0f0f);
a=((a&0xff00ff00)>>8)+(a&0x00ff00ff);
a=((a&0xffff0000)>>16)+(a&0x0000ffff);
/* Vystup v a */

Uloha cislo 2
-------------

Spoctete dolni celou cast dvojkoveho logaritmu a.

unsigned x,l=0; /* x cislo, v l bude logaritmus */
  if (x & 0xffff0000) { l += 16; x &= 0xffff0000; }
  if (x & 0xff00ff00) { l += 8;  x &= 0xff00ff00; }
  if (x & 0xf0f0f0f0) { l += 4;  x &= 0xf0f0f0f0; }
  if (x & 0xcccccccc) { l += 2;  x &= 0xcccccccc; }
  if (x & 0xaaaaaaaa) l++;
}

Uloha cislo 3
-------------

Zjistete, zda se rovnaji horni cele casti dvojkovych logaritmu cisel
a a b.

unsigned a,b; /* Vstup */
unsigned x;
a--;
b--;
x=a^b;
if (x<a&&x<b) {Rovnaji se.}

Uloha cislo 4
-------------

Najdete k 32-bitovemu cislu a nejblizsi vyssi nebo rovnou mocninu dvojky.

unsigned a; /* 32 bitu vstup */
a--;
a|=(a>>1);
a|=(a>>2);
a|=(a>>4);
a|=(a>>8);
a|=(a>>16);
a++;

Uloha cislo 5
-------------

Zrcadlete bity v 32-bitovem cisle tak, aby nejnizsi sel na misto nejvyssiho atd.

unsigned a; /* 32 bitu vstup */
a=((a&0x0000ffff)<<16)|((a&0xffff0000)>>16);
a=((a&0x00ff00ff)<<8)|((a&0xff00ff00)>>8);
a=((a&0x0f0f0f0f)<<4)|((a&0xf0f0f0f0)>>4);
a=((a&0x33333333)<<2)|((a&0xcccccccc)>>2);
a=((a&0x55555555)<<1)|((a&0xaaaaaaaa)>>2);

Postreh
-------

(a&b)<=(a|b)
(a^b)<=(a|b)
-~a=a+1
~-a=a-1


