#include #include #include void byteprinter(unsigned short val, char* lbl) { unsigned short mask = 0; mask |= 1; // equivalent to mask = 1; printf(lbl); for (int i=((8*sizeof(short))-1); i>=0; i--) { putchar(((val >> i) & mask) ? '1' : '0'); } putchar('\n'); } void and2(unsigned short aa, unsigned short bb) { printf("Bitwise and\n"); unsigned short cc = aa; cc &= bb; byteprinter(aa, "aa"); byteprinter(bb, "bb"); byteprinter(cc, "cc"); printf("cc %d\n\n", cc); } void andd(unsigned short aa, unsigned short bb) { printf("Bitwise and\n"); unsigned short cc = aa & bb; byteprinter(aa, "aa"); byteprinter(bb, "bb"); byteprinter(cc, "cc"); printf("cc %d\n\n", cc); } void orrr(unsigned short aa, unsigned short bb) { printf("Bitwise or\n"); unsigned short cc = aa | bb; byteprinter(aa, "aa"); byteprinter(bb, "bb"); byteprinter(cc, "cc"); printf("cc %d\n\n", cc); } void xorr(unsigned short aa, unsigned short bb) { printf("Bitwise XOR\n"); unsigned short cc = aa ^ bb; byteprinter(aa, "aa"); byteprinter(bb, "bb"); byteprinter(cc, "cc"); printf("cc %d\n\n", cc); } void orr2(unsigned short aa, unsigned short bb, int shft) { printf("Bitwise or with bb shifted by %d\n", shft); unsigned short cc = aa; cc |= bb << shft; // like += &= and ^= exists as well byteprinter(bb, "bb"); printf("\n"); byteprinter(aa, "aa"); byteprinter(bb<0 ? aa << shft : aa >> -shft; byteprinter(aa, "aa"); byteprinter(cc, "cc"); printf("cc %d\n\n", cc); } void mask(unsigned short shift, unsigned short mask, unsigned short aa) { printf("Masking\n"); unsigned short cc = aa & (mask<> rightshift); byteprinter(aa, "num1"); byteprinter(cc, "rslt "); printf("cc %d\n\n", cc); } int binaryfromstring(char* desc) { printf(desc); char a[256]; fgets(a, 255, stdin); int rtn = 0; for (int i=0; i