c语言_各种进制转换

上传人:xgs****56 文档编号:10424705 上传时间:2020-04-11 格式:DOC 页数:6 大小:18.58KB
返回 下载 相关 举报
c语言_各种进制转换_第1页
第1页 / 共6页
c语言_各种进制转换_第2页
第2页 / 共6页
c语言_各种进制转换_第3页
第3页 / 共6页
点击查看更多>>
资源描述
c 语言 各种进制转换 计算机中常用的数的进制主要有 二进制 八进制 十六进制 2 进制 用两个阿拉伯数字 0 1 8 进制 用八个阿拉伯数字 0 1 2 3 4 5 6 7 10 进制 用十个阿拉伯数字 0 到 9 16 进制就是逢 16 进 1 但我们只有 0 9 这十个数字 所以我们用 A B C D E F 这五个字母来分别表示 10 11 12 13 14 15 字母不区 分大小写 以下简介各种进制之间的转换方法 一 二进制转换十进制 例 二进制 1101100 1101100 二进制数 6543210 排位方法 例如二进制换算十进制的算法 1 26 1 25 0 24 1 23 1 22 0 21 0 20 说明 2 代表进制 后面的数是次方 从右往左数 以 0 开始 64 32 0 8 4 0 0 108 二 二进制换算八进制 例 二进制的 10110111011 换八进制时 从右到左 三位一组 不够补 0 即成了 010 110 111 011 然后每组中的 3 个数分别对应 4 2 1 的状态 然后将为状态为 1 的相加 如 010 2 110 4 2 6 111 4 2 1 7 011 2 1 3 结果为 2673 三 二进制转换十六进制 十六进制换二进制的方法也类似 只要每组 4 位 分别对应 8 4 2 1 就行了 如分解为 0101 1011 1011 运算为 0101 4 1 5 1011 8 2 1 11 由于 10 为 A 所以 11 即 B 1011 8 2 1 11 由于 10 为 A 所以 11 即 B 结果为 5BB 四 二进制数转换为十进制数 二进制数第 0 位的权值是 2 的 0 次方 第 1 位的权值是 2 的 1 次方 所以 设有一个二进制数 0110 0100 转换为 10 进制为 计算 0 20 0 21 1 22 0 23 0 24 1 25 1 26 0 27 100 五 八进制数转换为十进制数 八进制就是逢 8 进 1 八进制数采用 0 7 这八数来表达一个数 八进制数第 0 位的权值为 8 的 0 次方 第 1 位权值为 8 的 1 次方 第 2 位权值 为 8 的 2 次方 所以 设有一个八进制数 1507 转换为十进制为 计算 7 80 0 81 5 82 1 83 839 结果是 八进制数 1507 转换成十进制数为 839 六 十六进制转换十进制 例 2AF5 换算成 10 进制 直接计算就是 5 160 F 161 A 162 2 163 10997 别忘了 在上面的计算中 A 表示 10 而 F 表示 15 现在可以看出 所有进制换算成 10 进制 关键在于各自的权值不同 假设有人问你 十进数 1234 为什么是 一千二百三十四 你尽可以给他这么一 个算式 1234 1 103 2 102 3 101 4 100 十进制与二进制转换之相互算法 十进制转二进制 用 2 辗转相除至结果为 1 将余数和最后的 1 从下向上倒序写 就是结果 例如 302 302 2 151 余 0 151 2 75 余 1 75 2 37 余 1 37 2 18 余 1 18 2 9 余 0 9 2 4 余 1 4 2 2 余 0 2 2 1 余 0 故二进制为 100101110 二进制转十进制 从最后一位开始算 依次列为第 0 1 2 位 第 n 位的数 0 或 1 乘以 2 的 n 次方 得到的结果相加就是答案 例如 01101011 转十进制 第 0 位 1 乘 2 的 0 次方 1 1 乘 2 的 1 次方 2 0 乘 2 的 2 次方 0 1 乘 2 的 3 次方 8 0 乘 2 的 4 次方 0 1 乘 2 的 5 次方 32 1 乘 2 的 6 次方 64 0 乘 2 的 7 次方 0 然后 1 2 0 8 0 32 64 0 107 二进制 01101011 十进制 107 一 二进制数转换成十进制数 由二进制数转换成十进制数的基本做法是 把二进制数首先写成加权系数展开 式 然后按十进制加法规则求和 这种做法称为 按权相加 法 二 十进制数转换为二进制数 十进制数转换为二进制数时 由于整数和小数的转换方法不同 所以先将十进 制数的整数部分和小数部分分别转换后 再加以合并 1 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用 除 2 取余 逆序排列 法 具体做法是 用 2 去除十进制整数 可以得到一个商和余数 再用 2 去除商 又会得到一个商 和余数 如此进行 直到商为零时为止 然后把先得到的余数作为二进制数的 低位有效位 后得到的余数作为二进制数的高位有效位 依次排列起来 2 十进制小数转换为二进制小数 十进制小数转换成二进制小数采用 乘 2 取整 顺序排列 法 具体做法是 用 2 乘十进制小数 可以得到积 将积的整数部分取出 再用 2 乘余下的小数部 分 又得到一个积 再将积的整数部分取出 如此进行 直到积中的小数部分 为零 或者达到所要求的精度为止 然后把取出的整数部分按顺序排列起来 先取的整数作为二进制小数的高位有 效位 后取的整数作为低位有效位 1 二进制与十进制的转换 1 二进制转十进制方法 按权展开求和 例 1011 01 2 1 23 0 22 1 21 1 20 0 2 1 1 2 2 10 8 0 2 1 0 0 25 10 11 25 10 2 十进制转二进制 十进制整数转二进制数 除以 2 取余 逆序输出 例 89 10 1011001 2 2 89 2 44 1 2 22 0 2 11 0 2 5 1 2 2 1 2 1 0 0 1 十进制小数转二进制数 乘以 2 取整 顺序输出 例 0 625 10 0 101 2 0 625 X 2 1 25 X 2 0 5 X 2 1 0 2 八进制与二进制的转换 例 将八进制的 37 416 转换成二进制数 37 4 1 6 011 111 100 001 110 即 37 416 8 11111 10000111 2 例 将二进制的 10110 0011 转换成八进制 0 1 0 1 1 0 0 0 1 1 0 0 2 6 1 4 即 10110 011 2 26 14 8 3 十六进制与二进制的转换例 将十六进制数 5DF 9 转换成二进制 5 D F 9 0101 1101 1111 1001 即 5DF 9 16 10111011111 1001 2 例 将二进制数 1100001 111 转换成十六进制 0110 0001 1110 6 1 E 即 1100001 111 2 61 E 16 下面是通过栈的功能实现的进制转换 include include define STACK INIT SIZE 100 define STACKINCREMENT 10 typedef char SElemType typedefintSElemType typedefstruct SElemType base SElemType top intstacksize SqStack void InitStack SqStack if S base printf 存储分配失败 S top S base S stacksize STACK INIT SIZE int Empty SqStack S if S top S base return 1 else return 0 intGetTop SqStackS SElemType e S top 1 return 1 int Push SqStack if S base printf OVERFLOW S top S base S stacksize S stacksize STACKINCREMENT S top e return 1 int Pop SqStack e S top return 1 void DispStack SqStack S SElemType p p S top if Empty S printf 空栈 else while p S base printf c p void Conversion SqStack S intN a e InitStack S printf 要转换为几进制 scanf d printf 请输入待转换数 scanf d while N Push S N a N N a while Empty S Pop S e printf d e void main Conversion
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!