#include <stdio.h> #include <string.h> #include <math.h> int main(){ char binary[32]=""; fgets(binary, 32, stdin); binary[strlen(binary)-1] = 0; // 110 len=2 int len=strlen(binary); int n=0; 优化代码: 使用左移 int i=0; while(binary[i]){ n += (binary[i]-48)<<(len-1); i++; len--; } printf("%s 十进制: %d\n", binary, n); return 0; }
时间: 2024-04-10 08:29:55 浏览: 60
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
你好!你的代码是一个将二进制数转换为十进制数的程序。用户输入一个二进制数,然后程序将其转换为对应的十进制数并输出。
在你的代码中,你使用了一个字符数组 `binary` 来存储用户输入的二进制数。然后,你使用 `fgets` 函数从标准输入中读取用户输入,并将其存储到 `binary` 数组中。
接下来,你使用 `strlen` 函数获取用户输入二进制数的长度,并将其存储到变量 `len` 中。
然后,你定义了一个变量 `n` 来存储转换后的十进制数,并初始化为0。
接下来是你提到的优化代码部分。你使用了一个循环来遍历二进制数的每个字符。在循环中,你通过 `(binary[i]-48)` 将字符转换为对应的数字,并使用位运算符 `<<` 将该数字左移 `len-1` 位。然后,将结果累加到变量 `n` 中。
最后,你使用 `printf` 函数将原始的二进制数和转换后的十进制数输出到标准输出。
这是一个简单而有效的二进制转十进制的算法。如果你还有其他问题或需要进一步解释,请随时告诉我!
阅读全文