unsigned int hex_to_uint(char *s) { unsigned int ret = 0; size_t i; for (i = 4; i > 0; i--) { ret = (ret << 8) | (to_bin(s[2 * (i - 1)]) << 4); ret |= to_bin(s[2 * (i - 1) + 1]); } return ret; }
ull swap(ull n, ull a, ull b) { char bin[B+1], aux; to_bin(n, bin); aux = bin[a]; bin[a] = bin[b]; bin[b] = aux; return to_dec(bin); }
int main(void) { unsigned int word1 = 077u, word2 = 0150u, word3 = 0210u; printf ("%o ", word1 & word2); printf ("%o ", word1 & word1); printf ("%o ", word1 & word2 & word3); printf ("\n"); printf ("----------------------------------------------\n"); printf ("In binary terms:\n"); printf ("word1 = %i, and in binary ", word1); to_bin(word1); printf ("word2 = %i, and in binary ", word2); to_bin(word2); printf ("word3 = %i, and in binary ", word3); to_bin(word3); printf ("word1 & word2 = %i or in binary ", word1 & word2); to_bin(word1 & word2); printf ("word1 & word1 = %i or in binary ", word1 & word1); to_bin(word1 & word1); printf ("word1 & word2 & word3 = %i or in binary ", word1 & word2 & word3); to_bin(word1 & word2 & word3); return 0; }