#include <iostream>
#include <bitset>
#include <stdio.h>
using namespace std;
void printIntBits(int num);
void printExpression(char *text, int value);
int main() {
int number = 92;
printExpression("number", number);
printExpression("~number", ~number);
printExpression("(~number) + 1", (~number) + 1);
printExpression("-number", -number);
printExpression("(number) & (-number)", (number) & (-number));
return 0;
}
void printExpression(char *text, int value) {
printf("%-20s", text);
printIntBits(value);
printf("\n");
}
void printIntBits(int num) {
for(int i = 0; i < 8; i++) {
int mask = (0xF0000000 >> (i * 4));
int portion = (num & mask) >> ((7 - i) * 4);
cout << " " << std::bitset<4>(portion);
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8c3RkaW8uaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZvaWQgcHJpbnRJbnRCaXRzKGludCBudW0pOwp2b2lkIHByaW50RXhwcmVzc2lvbihjaGFyICp0ZXh0LCBpbnQgdmFsdWUpOwoKaW50IG1haW4oKSB7CglpbnQgbnVtYmVyID0gOTI7CgkKCXByaW50RXhwcmVzc2lvbigibnVtYmVyIiwgbnVtYmVyKTsKCXByaW50RXhwcmVzc2lvbigifm51bWJlciIsIH5udW1iZXIpOwoJcHJpbnRFeHByZXNzaW9uKCIofm51bWJlcikgKyAxIiwgKH5udW1iZXIpICsgMSk7CglwcmludEV4cHJlc3Npb24oIi1udW1iZXIiLCAtbnVtYmVyKTsKCXByaW50RXhwcmVzc2lvbigiKG51bWJlcikgJiAoLW51bWJlcikiLCAobnVtYmVyKSAmICgtbnVtYmVyKSk7CgkKCXJldHVybiAwOwp9Cgp2b2lkIHByaW50RXhwcmVzc2lvbihjaGFyICp0ZXh0LCBpbnQgdmFsdWUpIHsKCXByaW50ZigiJS0yMHMiLCB0ZXh0KTsKCXByaW50SW50Qml0cyh2YWx1ZSk7CglwcmludGYoIlxuIik7Cn0KCnZvaWQgcHJpbnRJbnRCaXRzKGludCBudW0pIHsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCA4OyBpKyspIHsKICAgICAgICBpbnQgbWFzayA9ICgweEYwMDAwMDAwID4+IChpICogNCkpOwogICAgICAgIGludCBwb3J0aW9uID0gKG51bSAmIG1hc2spID4+ICgoNyAtIGkpICogNCk7CgkgICAgY291dCA8PCAiICIgPDwgc3RkOjpiaXRzZXQ8ND4ocG9ydGlvbik7CiAgICB9Cn0K