08/11/02 20:59:47
>>173
#include <stdio.h>
#include <limits.h>
#define UPPER_BIT (1 << (sizeof(int) * CHAR_BIT - 1))
void print_bit_s(int n){
unsigned int mask = UPPER_BIT;
for(;mask; mask >>=1) putchar(mask & n ? '1' : '0');
putchar('\n');
}
void print_bit_u(unsigned int n){
unsigned int mask = UPPER_BIT;
for(;mask; mask >>=1) putchar(mask & n ? '1' : '0');
putchar('\n');
}
int main(){
int n1 = (-1);
int n2 = n1 & ~UPPER_BIT;
unsigned int m1 = n1;
unsigned int m2 = n2;
print_bit_s(n1 >> 1);
print_bit_u(m1 >> 1);
print_bit_s(n2 << 1);
print_bit_u(m2 << 1);
return 0;
}
// output
11111111111111111111111111111111
01111111111111111111111111111111
11111111111111111111111111111110
11111111111111111111111111111110