Two's complement is the most common number code for storing integer values. Considering the following 8 bit "value box":
| -128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Using this box and given the binary number 10001101, this will be equivalent to -128+8+4+1 = -115. Thus any two's complement number with a leading 1 represents a negative number (and vice-versa). Therefore, in the above case, the largest negative number that can be stored is -128, and the largest positive number is 127.
To give two further examples the number 1 would be represented by the bit pattern 00000001, and the number -1 by the bit pattern 11111111.
#include <stdlib.h>
void main(int argc, char *argv[])
{
int i = 1, addr;
unsigned long int n;
/* Check Input */
if (argc != 2) {
printf("INPUT ERROR.\n");
exit(1);
}
else addr = atoi(argv[1]);
/* Output */
for(n=2147483648;n>0;n=n/2) {
if (i==9) {
printf(" ");
i=2;
}
else i++;
if (addr & n) printf("1");
else printf("0");
}
printf("\n");
}
Created and maintained by Frans Coenen. Last updated 03 July 2001