#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);
    }
}
