优化后
#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 |