赞
踩
其他进制转为十进制都可以实现,只需要将函数中的10和2换掉你需要的就行
- #include <stdio.h>
- #include <math.h>
-
- // 1. 二进制转换为十进制
- int twoConvertTen(long long n,long long size)
- {
-
- int result = 0; /* 结果数 */
- int remainder; /* 余数 */
-
- // 也可以使用while(n != 0){} 代替for循环
- // 此种方法在二进制位数很多时,不适用
- for(int i = 0; i < size; i++)
- {
- remainder = n % 10; /* 求出每一位的数值是1还是0 */
- n /= 10;
- result += remainder*pow(2,i);
- }
-
- return result;
- }
-
- // 2. 十进制转换为二进制
- long long tenConvertTwe(int n)
- {
-
- int i = 1;
- int result = 0; /* 结果数 */
- int remainder; /* 余数 */
-
- while (n != 0) {
- remainder = n % 2;
- n /= 2;
- result += remainder * i;
- i *= 10; /* 从个位->十位->百位->... */
- }
-
- return result;
- }
-
- int main(){
-
- // 1. 二进制转换为十进制
- long long n = 1111; /* n是二进制数 */
- long long size = 4; /* size是二进制位数 */
-
- printf("二进制数 %lld 转换为十进制为: %d\n",n,twoConvertTen(n,size));
-
- // 2. 十进制转换为二进制
- int a;
-
- printf("输入一个十进制数: ");
- scanf("%d",&a);
-
- printf("十进制数 %d 转换为二进制数为: %lld",a,tenConvertTwe(a));
-
- return 0;
- }
运行结果:
下面的方法结合前辈的思路编写的。
任意进制之间都可以进行转换,只需要一个函数就能解决。
- #include <stdio.h>
- #include <math.h>
-
- /*
- 任意进制转换:
- a: 原进制下的数
- b: 原进制的基
- c: 目标进制的基
- result: 转换后的结果
- */
-
- long long conversion(int a,int b,int c)
- {
- int result = 0,i = 0;
-
- while (a != 0) {
- result += (a % c) * pow(b,i);
- i = i + 1;
- a /= c;
- }
-
- return result;
- }
-
- int main(){
-
- // 1. 二进制转换为十进制
- long long n;
-
- printf("输入一个二进制数: ");
- scanf("%lld",&n);
-
- printf("二进制数 %lld 转换为十进制为: %lld\n",n,conversion(n,2,10));
-
- printf("\n");
-
- // 2. 十进制转换为二进制
- int m;
-
- printf("输入一个十进制数: ");
- scanf("%d",&m);
-
- printf("十进制数 %d 转换为二进制数为: %lld\n",m,conversion(m,10,2));
-
- printf("\n");
-
- // 3. 八进制转为二进制,需要调用两次函数
- // 第一次由八进制转为十进制
- // 第二次由十进制转为二进制
- // 其他转换形式以此类推
-
-
- return 0;
- }
-
-
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。