工具函数
要求将文件中二进制补码立即数转为十进制数,写的时候本来想偷个懒找一段,没搜到。
照着一位仁兄的改了改,改成了补码的。
代码如下:注释简单解释了下
#include<stdio.h>
int main(void)
{
char input[20];
int dec;
scanf("%s",input);
dec = bin2dec(input);
printf("%d\n",dec);
return 0;
}
int bin2dec(const char *pbin)
{
int i = 1;
int result = 0;
if(pbin[0] == '0'){
while (pbin[i] == '0' || pbin[i] == '1'){
result = result * 2 + (pbin[i] - '0');
i++;
}
}
else{
while (pbin[i] == '0' || pbin[i] == '1'){
result = result * 2 + ('1' - pbin[i]);//为1时取0,为0时取1.逐位取反
i++;
}
result = 0 - ( result + 1 );//值为数据位加一再取反
}
return result;
}
有待考虑却懒得考虑的事情
- 二进制位数限制/补码值边界条件
- 无效输入反馈