C语言十进制转换二进制
·
正数十进制转换二进制的方法:
将该数字不断除以2直到商为零,然后将余数由下至上依次写出,即可得到该数字的二进制表示
以20转二进制为例:
#include <stdio.h>
void transfer(int x)
{
char buf[32];
int i=0;
/*循环除2,把余数存储在数组中*/
while( (x/2)!=0 )
{
buf[i] = x%2;
x = x/2;
i++;
}
buf[i] = x%2;
/*循环遍历数组,从后往前打印余数*/
for(int j=i; j>=0 ;j--)
{
printf("%d",buf[j]);
}
printf("\n");
}
int main(void)
{
int x;
while(1)
{
printf("请输入一个10进制数:");
scanf("%d",&x);
/*若输入的数小于0,退出循环,程序结束*/
if(x<0)
break;
printf("%d的二进制是:",x);
transfer(x);
printf("\n");
}
printf("退出程序\n");
return 0;
}
负数十进制转换二进制的方法:
换成二进制后(带符号位),取反,加1
以int型(4个字节)的-5为例子:
5 的原码: 00000000 00000000 00000000 00000101
-5 的原码:10000000 00000000 00000000 00000101
-5 的反码:11111111 11111111 11111111 11111010(符号位不变)
-5 的补码:11111111 11111111 11111111 11111010
+ 1
=11111111 11111111 11111111 11111011
因此,-5 二进制为:11111111 11111111 11111111 11111011
转换为十六进制为:0xFFFFFFFB
更多推荐
已为社区贡献2条内容
所有评论(0)