/*
 * Soubor:  20110209-Wed-bitove-operace.c
 * Datum:   09.02.2011 13:03
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha: 
 ****************************************************/
#define _ISOC99_SOURCE
#define _GNU_SOURCE
#include <stdio.h>
/****************************************************
 *               Hlavní program.
 ****************************************************/
int main(void) {
    int i=0;
    int a,b;

    i=58;
    printf("hexa: %X\n",i);
    i=0x3A;  // konstanta začíná 0x
    printf("deka: %d\n",i);
    i=072;  // konstanta začíná 0
    printf("okta: %o\n",i);

    a=0xB5;
    b=0x3C;
    /* a 10110101  0xB5
     * b 00111100  0x3C
     * & ---------
     *   00110100  0x34
     * */
    printf("%X & %X == %X\n",a,b,a&b);
    /* a 10110101  0xB5
     * b 00111100  0x3C
     * | ---------
     *   10111101  0xBD
     * */
    printf("%X | %X == %X\n",a,b,a|b);

    /* a 10110101  0xB5
     * b 00111100  0x3C
     * ^ ---------
     *   10001001  0x89
     * */
    printf("%X ^ %X == %X\n",a,b,a^b);
    /* 
     *   10001001  0x89
     * ~ 01110110  0x76   
     * */
    printf("~(%X ^ %X) == %X\n",a,b,~(a^b));
    /* 
     *    00000001  0x01
     *<<3 00001000  0x08   
     * */
    printf("%X << %X == %X\n",1,3,1<<3);

    return 0;
}

