Exemplu: citirea unui număr în octal
#include <ctype.h> #include <stdio.h> int read_oct(void) { int c, n = 0; c = getchar(); if (c != '0') return 0; // trebuie prefix 0 while (isdigit(c = getchar())) { if (c > '7') break; // n-a fost cifra octala, gata. else n = (n << 3) | (c - '0'); } return n; } int main(void) { printf("%d\n", read_oct()); return 0; }Exemplu: căutarea unui tipar de biți (11) într-un număr
#include <stdio.h> // caută dacă n are cnt biti consecutivi cu tiparul patt int bitsrch(unsigned n, int cnt, int patt) { int i; // pozitia tiparului int m = (1 << cnt) - 1; // tipar cu cnt de 1 for (i = 0; n; ++i, n >>= 1) // cat timp n != 0, nu s-au consumat toti bitii // la continuarea ciclului se incrementeaza i si deplaseaza n if ((n & m) == patt) // s-a gasit tiparul pe ultimii cnt biti return i; // returnează poziția curentă return -1; // nu s-a găsit tiparul } int main(void) { int pos = bitsrch(11, 3, 5); // cauta tiparul de 3 biti 101 (5) in nr. 11 if (pos >= 0) printf("tiparul s-a gasit pe pozitia %d\n", pos); else printf("tiparul nu s-a gasit"); return 0; }Probleme propuse: