Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int main()
- {
- int i;
- unsigned char co = 0b11111110; //czego szukam
- unsigned int pomoc = co;
- unsigned int gdzie = 0b11111111111111111111111111111110; //gdzie szukam
- unsigned int gdzie2 = gdzie;
- unsigned int maska = ~0;
- maska = maska << 8 * 3;
- pomoc = pomoc << 8 * 3;
- for (i = 31; i >= 0; i--)
- printf("%u", (gdzie >> i) & 1);
- printf("\n");
- if (!co) // neguję co i gdzie tylko po to zebym mogl zprawdzac jak czlowek czy wyjsc juz z petli
- {
- pomoc = maska; // skoro szukamy osmiu 0 to jak zanegujemy to szukamy 8 jedynek a nasza maska idealnie pasuje
- gdzie2 = ~gdzie2; //jak zanegujemy gdzie2 to ciąg 00000000 zamieni się na 11111111 i go szukamy
- co = ~co; // to jest niepotrzebne nie wiem czemu to napisałem
- }//ten if w while jakbym szukał 0 to by zawzse był prawdziwy (0==0) i zakonczyłoby program za prierwszym razem a ten trik pozwala nam szukać 0
- while ( ((gdzie2&maska) ^ pomoc) != 0) // obcinam wszystko do okoła tego co szukam i zamieniam 0 (gdzie2&maska) a później xor z tym czego szukam i jeżeli 0 poza obszarem szukania zostaną zerami a każda niezgodnoś między obszarem szukania a tym co szukamy zamieni się na 1
- {
- if (co == pomoc) return 0; // tu jeżeli pomoc == co to czyli pomoc = 00....00(tutaj wartość co) czyli jak przesuniemy o 1 dalej to już będziemy szukali co z odciętym ostatnim bitem
- pomoc = pomoc >> 1;
- maska = maska >> 1;
- }
- gdzie = gdzie ^ maska;
- for (i = 31; i >= 0; i--)
- printf("%u", (gdzie >> i) & 1);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement