进制转换算法的C语言实现
来源:互联网 发布:轩辕网络新三板股票 编辑:程序博客网 时间:2024/04/28 01:58
进制问题几乎是刚入门计算机时学的东西,即便如此,你知道进制之间是如何转换的吗?下面就来详细说明各进制之间的转换原理。
(一)二、八、十六进制转十进制
2、8、16转10有一个通用的算法,就是用各位上的数乘以本进制的基数的n次幂(n为本位数后面的位数)求值后相加所得。有点绕口是吧?语文没学好,请谅解,下面举个例就懂了。
Eg:100002=?10
这是将二进制的10000转换成十进制,从左往右看,第一位是1,后面位数都是0,那就是:
1*24+0*23+0*22+0*21+0*20=16+0+0+0+0=16
24中的2就是基数,最后相加的和就是十进制。
Eg:57458= ?10
还是按照上面的算法来:
5*83+7*82+4*81+5*80=3045
是不是明白点了?来看下十六进制,与以上两个不同的是,十六进制中带有字母,不难理解,碰见A就把它替换成10,碰见B就替换成11,以此类推直到F,还是来看例子,随便写个数字(真的是随手写的,不信你问我键盘o(^▽^)o):
Eg:2435DE16=?10
2*165+4*164+3*163+5*162+13*161+14*160=2373086
代码:
//二进制转十进制 /*博客:http://blog.csdn.net/cnshsh */ #include <stdio.h>#include <stdlib.h> //itoa()函数所在头文件 #include <string.h>int Binary2Decimal(int b){char s[100];int re = 0,i,n;itoa(b,s,10);//将传进来的二进制数以字符串的形式存储n = strlen(s) - 1;for (i=n; i>=0; i--)re += s[i]-48<<n-i; return re;}int main(){printf("%d\n",Binary2Decimal(1011));}
(二)十进制转二、八、十六进制
这个不用多说,当然也有自己的通用算法了,用十进制数除以其他进制的基数,将余数逆向排序,来看下例子
Eg:1010= ?2
10 / 2 =5 ······ 0
5 / 2 = 2 ······ 1
2 / 2 = 1 ······ 0
1 / 2 = 0 ······ 1
最后倒序写成:1010
Eg:8310= ?8
83 / 8 = 10 ······ 3
10 / 8 = 1 ······ 2
1 / 8 = 0 ······ 1
倒序:123
Eg:29910= ?16
299 / 16 = 18 ······ 11
18 / 16 = 1 ······ 2
1 / 16 = 0 ······ 1
倒序写时超过9的就用字母代替,比如这个11就用B代替:12B
今天暂时写这么多,有时间把其他两种进制的转换补上。
- 进制转换算法的C语言实现
- 进制转换算法及C语言实现
- C语言 - 进制转换, 十进制 转 二进制 的算法
- RGB颜色转换算法C语言实现
- C语言栈的实现进制转换
- 用C语言实现进制转换
- C语言实现进制转换
- 4.c语言的进制转换
- C语言基础 进制的转换
- C语言实现大小写字母的转换
- C语言通过函数实现 itoa()的功能 将整数转换成字符串 并实现进制转换
- 十进制转换2-16进制(c语言算法实现)
- C语言简单实现进制互相转换
- 简单C语言递归实现进制转换并输出
- c语言之进制转换(栈实现)
- C语言实现任意进制的转换,主要注意代码的小技巧
- 数据结构 栈的应用任意进制转换(c语言实现)
- lzw压缩算法的c语言实现
- 利用51系列单片机定时器功能实现测量脉冲宽度
- Merge Sorted Array-LeetCode
- 一个简单的网络爬虫---爬取网页中的图片
- malloc的实现
- ActionBar + ViewPager实现左右滑动切换Tab页效果
- 进制转换算法的C语言实现
- 你并不孤独
- Debug和masm对指令的不同处理
- ArcSDE操作非空间数据表
- 忘我的工作,更要有忘我的运动
- Jquery ThickBox的使用
- LeetCode: N-Queens II
- 编译原理之LR(0)分析算法的c实现
- nginx入门学习—— 在已安装好的nginx上添加nginx_upstream_check_module模块(三)