#include <stdio.h>
#include <stdlib.h>
/*
* C bitwise Operators
* 6 of them
* >> Shift Right
* << Shift Left
* ~ NOT
* & AND
* | OR
* ^ XOR
*/
/*
* A char in C is guaranteed to be 1 byte.
* Look dox dir for truth tables and other stuff.
* Check https://g...content-available-to-author-only...b.com/Acry/Byte_Drawer.
*/
void traverse_byte (unsigned char);
int main(int argc, char **argv)
{
(void) argc;
(void) argv;
// Byte unset
unsigned char x=0;
traverse_byte(x); // 1
// 00000000
// Byte unset
x=1;
traverse_byte(x); // 2
// 00000001
// >> Shift Left by 4
x=x<<4;
traverse_byte(x); // 3
// 00010000
// << Shift Right by 1
x=x>>1;
traverse_byte(x); // 4
// 00001000
// ~ NOT
// Inverts Bits
x=~x;
traverse_byte(x); // 5
// 11110111
// & AND
// Both set results in set
unsigned char a=0;
unsigned char b=0xff;
unsigned char c=a&b;
traverse_byte(c); // 6
// 00000000
a = 1;
b = 1;
c=a&b;
traverse_byte(c); // 7
// 00000001
// | OR
// any set results in set
a = 85;
b = 170;
c=a|b;
traverse_byte(c); // 8
// 11111111
// ^ XOR
// either set results in set, but not both
a = 213;
c=a^b;
traverse_byte(c); // 9
// 01111111
return EXIT_SUCCESS;
}
void traverse_byte(unsigned char c)
{
static unsigned int count = 1;
for (int i = 0; i < 8; i++) {
printf("%d", !!((c
<< i
) & 0x80)); }
count++;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8qCiAqIEMgYml0d2lzZSBPcGVyYXRvcnMKICogNiBvZiB0aGVtCiAqID4+CVNoaWZ0IFJpZ2h0CiAqIDw8CVNoaWZ0IExlZnQKICogfglOT1QKICogJglBTkQKICogfAlPUgogKiBeCVhPUgogKi8KCi8qCiAqIEEgY2hhciBpbiBDIGlzIGd1YXJhbnRlZWQgdG8gYmUgMSBieXRlLgogKiBMb29rIGRveCBkaXIgZm9yIHRydXRoIHRhYmxlcyBhbmQgb3RoZXIgc3R1ZmYuCiAqIENoZWNrIGh0dHBzOi8vZy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uYi5jb20vQWNyeS9CeXRlX0RyYXdlci4KICovCgp2b2lkIHRyYXZlcnNlX2J5dGUJKHVuc2lnbmVkIGNoYXIpOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7Cgoodm9pZCkgYXJnYzsKKHZvaWQpIGFyZ3Y7CgpwcmludGYoIkhlbGxvIEJpdHMhXG5cbiIpOwoKLy8gQnl0ZSB1bnNldAp1bnNpZ25lZCBjaGFyIHg9MDsKdHJhdmVyc2VfYnl0ZSh4KTsgCQkJCQkvLyAxCi8vIDAwMDAwMDAwCgovLyBCeXRlIHVuc2V0Cng9MTsKdHJhdmVyc2VfYnl0ZSh4KTsJCQkJCS8vIDIKLy8gMDAwMDAwMDEKCi8vID4+CVNoaWZ0IExlZnQgYnkgNAp4PXg8PDQ7CnRyYXZlcnNlX2J5dGUoeCk7CQkJCQkvLyAzCi8vIDAwMDEwMDAwCgovLyA8PAlTaGlmdCBSaWdodCBieSAxCng9eD4+MTsKdHJhdmVyc2VfYnl0ZSh4KTsJCQkJCS8vIDQKLy8gMDAwMDEwMDAKCi8vIH4JTk9UCi8vIEludmVydHMgQml0cwp4PX54Owp0cmF2ZXJzZV9ieXRlKHgpOwkJCQkJLy8gNQovLyAxMTExMDExMQoKLy8gJglBTkQKLy8gQm90aCBzZXQgcmVzdWx0cyBpbiBzZXQKdW5zaWduZWQgY2hhciBhPTA7CnVuc2lnbmVkIGNoYXIgYj0weGZmOwp1bnNpZ25lZCBjaGFyIGM9YSZiOwp0cmF2ZXJzZV9ieXRlKGMpOwkJCQkJLy8gNgovLyAwMDAwMDAwMAoKYSA9IDE7CmIgPSAxOwpjPWEmYjsKdHJhdmVyc2VfYnl0ZShjKTsJCQkJCS8vIDcKLy8gMDAwMDAwMDEKCi8vIHwJT1IKLy8gYW55IHNldCByZXN1bHRzIGluIHNldAphID0gODU7CmIgPSAxNzA7CmM9YXxiOwp0cmF2ZXJzZV9ieXRlKGMpOwkJCQkJLy8gOAovLyAxMTExMTExMQoKLy8gXglYT1IKLy8gZWl0aGVyIHNldCByZXN1bHRzIGluIHNldCwgYnV0IG5vdCBib3RoCmEgPSAyMTM7CmM9YV5iOwp0cmF2ZXJzZV9ieXRlKGMpOwkJCQkJLy8gOQovLyAwMTExMTExMQoKcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQoKdm9pZCB0cmF2ZXJzZV9ieXRlKHVuc2lnbmVkIGNoYXIgYykKewoJc3RhdGljIHVuc2lnbmVkIGludCBjb3VudCA9IDE7CglwcmludGYoIiVkOiAiLGNvdW50KTsKCWZvciAoaW50IGkgPSAwOyBpIDwgODsgaSsrKSB7CgkJcHJpbnRmKCIlZCIsICEhKChjIDw8IGkpICYgMHg4MCkpOwoJfQoJcHJpbnRmKCJcblxuIik7Cgljb3VudCsrOwp9Cg==