优化后
- #include <stdio.h>
- erjinzhi(char x)
- {
- char i;
- for(i=7;i>=0;i--)
- {
- if(x&(1<<i)) printf("1");
- else printf("0");
- if(i==4) printf(" ");
- }
- printf("\n");
- }
- shuju(char x)
- {
- if(x>=0)
- printf("该正数为:%d\n",x);
- else
- printf("该负数为:%d\n",x);
- erjinzhi(x);
- }
- int main()
- {
- shuju(1);
- shuju(2);
- shuju(3);
-
- shuju(-1);
- shuju(-2);
- shuju(-3);
- return 0;
- }
- //-1
- //负数:最高位1表示负号:1000 001
- //除符号位外,取反后加1:1111 111
- //-2
- //负数:最高位1表示负号:1000 010
- //除符号位外,取反后加1:1111 110
该正数为:1
0000 0001
该正数为:2
0000 0010
该正数为:3
0000 0011
该负数为:-1
1111 1111
该负数为:-2
1111 1110
该负数为:-3
1111 1101
|