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

痛定思痛。 2022-10-12 01:34 308阅读 0赞

工具函数

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

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

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

  1. #include<stdio.h>
  2. int main(void)
  3. {
  4. char input[20];
  5. int dec;
  6. scanf("%s",input);
  7. dec = bin2dec(input);
  8. printf("%d\n",dec);
  9. return 0;
  10. }
  11. int bin2dec(const char *pbin)
  12. {
  13. int i = 1;
  14. int result = 0;
  15. if(pbin[0] == '0'){
  16. while (pbin[i] == '0' || pbin[i] == '1'){
  17. result = result * 2 + (pbin[i] - '0');
  18. i++;
  19. }
  20. }
  21. else{
  22. while (pbin[i] == '0' || pbin[i] == '1'){
  23. result = result * 2 + ('1' - pbin[i]);//为1时取0,为0时取1.逐位取反
  24. i++;
  25. }
  26. result = 0 - ( result + 1 );//值为数据位加一再取反
  27. }
  28. return result;
  29. }

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

  • 二进制位数限制/补码值边界条件
  • 无效输入反馈

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读