将二进制补码字符串转换为十进制整型数字

工具函数

要求将文件中二进制补码立即数转为十进制数,写的时候本来想偷个懒找一段,没搜到。
照着一位仁兄的改了改,改成了补码的。

参考:
C语言把二进制转换为十进制数的方法和示例

代码如下:注释简单解释了下

#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;
}

有待考虑却懒得考虑的事情

  • 二进制位数限制/补码值边界条件
  • 无效输入反馈
    原文作者:悄敲敲
    原文地址: https://blog.csdn.net/Miller_6/article/details/118420635
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞