#include #include #include #define ON 1 #define OFF 0 int main (int argc, char *argv[]) { int flip = OFF; int i = 0; // A counter variable int num = 0; int j = 0; // A counter variable char *bits = argv[1]; // The bits we want to flip // Check if the number is negative if (bits[0] == '1') { printf("-"); flip = ON; } // If we need to flip the bits if (flip == ON) { // Subtract 1 if (bits[7] == '1') bits[7] = '0'; else { // Sam's subtraction algorithm, implemented in C. for(i=7; bits[i] == '0';i--) bits[i] = '1'; bits[i-1] = '0'; } // Flip the bits for (i = 0; i<8; i++) // Note, by subtracting the value of '0', we convert '0' to 0 // '1' to 1. bits[i] = !(bits[i] - '0') + '0'; // Tell Sam how we feel flip = OFF; } // Turn into an integer for (i = 7; i >= 0; --i) { if (bits[i] == '1') num += pow (2, j); ++j; } printf ("%d\n", num); return 0; }