位移运算,可以不使用pow,因其二进制数的本质,使得这一方法非常取巧。
相比与原来使用pow函数,
现在不再需要使用double类型了,也不需要使用math.h头文件了,结果也可以直接输出
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>int main()
{int i = 0;;//循环次数int n = 0;//输入的二进制数int bit = 0;;int decimalValue = 0;//十进制结果,使用double类型避免类型转换错误printf("请输入一个二进制数:");scanf("%d", &n);// 逐位处理二进制数while (n != 0){bit = n % 10; // 提取当前二进制位decimalValue = decimalValue + bit * (1 << i); // 这是一个位移运算,用于计算 2 的幂。1 << i 表示将数字 1 向左移 i 位,等价于 2 的 i 次方。i++;n = n / 10; // 去掉最低位}printf("十进制数是%d", decimalValue);//int强制转换,使pow返回的double类型,最后打印为整形}
输出结果:
请输入一个二进制数:1110
十进制数是14