#include <stdio.h>
void process(void);
void showBit(int n);
int main (int argc, char **argv) {
process();
return 0;
}
void process(void) {
int nSignNumber = 0xFFFFFFFF;
unsigned int nUnSignNumber = 0xFFFFFFFF;
printf ("Original :\n%d %u\n", nSignNumber, nUnSignNumber);
showBit(nSignNumber);
showBit(nUnSignNumber);
nSignNumber <<= 1;
nUnSignNumber <<= 1;
printf ("<< 1 :\n%d %u\n", nSignNumber, nUnSignNumber);
printf ("%d %u\n", nSignNumber, nUnSignNumber);
showBit(nSignNumber);
showBit(nUnSignNumber);
nSignNumber >>= 1;
nUnSignNumber >>= 1;
printf (">> 1 :\n%d %u\n", nSignNumber, nUnSignNumber);
printf ("%d %u\n", nSignNumber, nUnSignNumber);
showBit(nSignNumber);
showBit(nUnSignNumber);
}
void showBit(int n) {
for (int i = 31; i >= 0; i--) {
printf ("%d%s", ((n & 1<<i)?1:0), ((i % 4 == 0)?" ":""));
}
printf ("\n");
}
Hi-iMac:CPP chobocho$ ./a.out
Original :
-1 4294967295
1111 1111 1111 1111 1111 1111 1111 1111
1111 1111 1111 1111 1111 1111 1111 1111
<< 1 :
-2 4294967294
-2 4294967294
1111 1111 1111 1111 1111 1111 1111 1110
1111 1111 1111 1111 1111 1111 1111 1110
>> 1 :
-1 2147483647
-1 2147483647
1111 1111 1111 1111 1111 1111 1111 1111
0111 1111 1111 1111 1111 1111 1111 1111