【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细

目录

1.进制转换必备知识:

        1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1

        1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分

2. 二进制与八进制、十六进制相互转换

        2.1 二进制转八进制

        2.2 八进制转二进制

        2.3 二进制转十六进制

        2.4 十六进制转二进制

3. 二进制与十进制相互转换 

        3.1 二进制转十进制

        3.2 十进制转二进制

4. 八进制和十进制相互转换

        4.1 八进制转十进制(间接转换、直接转换)

        4.2 十进制转八进制

5. 十六进制和十进制相互转换

        5.1 十六进制转十进制

        5.2 十进制转十六进制

6. 小数部分转换

       6.1 二进制小数与十进制小数相互转换

       6.2 二进制小数转八进制

       6.3 二进制小数转十六进制

7.总结


1.进制转换必备知识:

        1.1 二进制逢2进1         8进制逢8进1           10进制逢10进1        16进制逢16进1

注意:16进制数由于超过10,数字由两位数字表示16进制时会造成数字混淆的情况,所以我们用A、B、C、D、E、F来表示10、11、12、13、14、15

        1.2为了区分二、八、十、十六进制,我们通常在数字后面加字母进行区分

          二进制是Binary,简写为B

          八进制是Octal,简写为O

         十进制为Decimal,简写为D

         十六进制为Hexadecimal,简写为H


2. 二进制与八进制、十六进制相互转换

      必须理解的知识:

      3个二进制数可以表示一个八进制数,反过来,表示一个八进制数表示3个二进制数。

      举例:二进制数111转为八进制数为7,八进制7转二进制为111

       4个二进制数表示一个十六进制数,同上……

       举例:二进制数1111转为十六进制数为15,同上……

        2.1 二进制转八进制

           方法:3位二进制转为1位八进制(三位由右向左选,最左边一组不够三位补0)

           转换过程:

         2.2 八进制转二进制

               方法:八进制的一个数表示二进制的3个数

               转换过程:

        2.3 二进制转十六进制

              方法:4位二进制数表示1位十六进制数

              转换过程: 

        2.4 十六进制转二进制

           方法:1位十六进制转4位二进制

           转换过程:


3. 二进制与十进制相互转换 

        3.1 二进制转十进制

        方法:按权展开式

        方法概念:以二进制数101举例,最右边的1表示权位为0,中间的0表示权位为1,最左边权位为2,然后又是二进制数,所以把每位数乘以2的次幂(次幂大小权位数大小)位权从0开始,大小由右向左依次加1

         手写图片讲解:

        3.2 十进制转二进制

          方法:短除法

          口诀:除二取余,倒序排列

          转换过程:

4. 八进制和十进制相互转换

        4.1 八进制转十进制(间接转换、直接转换)

方法一:间接转换

          先将8进制转换为2进制,再将2进制转换为10进制

           8进制转2进制可以使用“4 2 1”法,由于3个2进制数组成,最大表示7(111)的情况,这样说明一个8进制数表示3个2进制数

方法二:直接转换

          (除八取余)同(除二取余)一样

两种方法解答如下:


        4.2 十进制转八进制

             方法:除八取余,倒叙排列

             转换过程: 


5. 十六进制和十进制相互转换

        5.1 十六进制转十进制

           方法:按权展开(同二进制)

           转换过程: 

        5.2 十进制转十六进制

              方法:除十六取余,倒叙排列

              转换举例:



6. 小数部分转换

       6.1 二进制小数与十进制小数相互转换

      方法:整数部分还是按权展开,小数部分从左向右依次除2、4、8……

      转换举例(二转十): 

      转换举例(十转二)

       方法:整数部分”除二取余,倒序排列“,小数部分”乘二取整,正向排列“

        6.2 二进制小数转八进制

         方法:整数部分”4 2 1法“不够三位前面补0,小数部分”4 2 1法“不够三位后面补0

          注意:计算的时候都是位权都是从右向左依次加1

          转换过程:

        6.3 二进制小数转十六进制

      方法:和(二转八)类似

      注意:和(二转八)类似

       转换过程: 


7.总结

   整数部分:

                       二、八、十六进制转十进制——(按权展开法)

                       十进制转二、八、十六进制——(除n取余法,倒叙排列)——n表示多少进制

   小数部分:

                     二、八、十六进制小数转十进制——(除n的位权次幂)位权为1,从左向右依次递增1

                     十进制小数转二、八、十六进制——(乘n取整,正向排列)

如果觉得小余进制转换讲的不错,期待你的一键三连哦!!!

有疑问和错误的地方,记得告诉我哦,一定及时回复。

  • 157
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 99
    评论
好的,我可以为您提供一个简单的 C++ 程序,实现二、八、十、十六进制数之间的相互转换包含小数)。以下是程序代码: ```cpp #include <iostream> #include <string> #include <cmath> using namespace std; // 二进制十进制 int binToDec(string num) { int len = num.length(); int dec = 0; for (int i = 0; i < len; i++) { dec += (num[i] - '0') * pow(2, len - i - 1); } return dec; } // 八进制十进制 int octToDec(string num) { int len = num.length(); int dec = 0; for (int i = 0; i < len; i++) { dec += (num[i] - '0') * pow(8, len - i - 1); } return dec; } // 十六进制十进制 int hexToDec(string num) { int len = num.length(); int dec = 0; for (int i = 0; i < len; i++) { if (num[i] >= '0' && num[i] <= '9') { dec += (num[i] - '0') * pow(16, len - i - 1); } else if (num[i] >= 'A' && num[i] <= 'F') { dec += (num[i] - 'A' + 10) * pow(16, len - i - 1); } else if (num[i] >= 'a' && num[i] <= 'f') { dec += (num[i] - 'a' + 10) * pow(16, len - i - 1); } } return dec; } // 十进制二进制 string decToBin(int num) { string bin = ""; while (num > 0) { bin = to_string(num % 2) + bin; num /= 2; } return bin; } // 十进制八进制 string decToOct(int num) { string oct = ""; while (num > 0) { oct = to_string(num % 8) + oct; num /= 8; } return oct; } // 十进制十六进制 string decToHex(int num) { string hex = ""; while (num > 0) { int tmp = num % 16; if (tmp < 10) { hex = to_string(tmp) + hex; } else { hex = (char)('A' + tmp - 10) + hex; } num /= 16; } return hex; } // 浮点数转换整数小数部分 void splitFloat(double num, int& integer, double& fraction) { integer = (int)num; fraction = num - integer; } // 小数部分二进制 string fractionToBin(double fraction) { string bin = ""; int count = 0; while (fraction > 0 && count < 6) { // 最多保留6位小数 fraction *= 2; if (fraction >= 1) { bin += '1'; fraction -= 1; } else { bin += '0'; } count++; } return bin; } int main() { string num; int base; cout << "请输入要转换的数(包含小数):" << endl; cin >> num; cout << "请输入要转换的数的进制(2, 8, 10, 16):" << endl; cin >> base; int integer; double fraction; splitFloat(stod(num), integer, fraction); string result = ""; if (base == 2) { result = decToBin(integer) + "." + fractionToBin(fraction); } else if (base == 8) { result = decToOct(integer) + "." + fractionToBin(fraction); } else if (base == 10) { result = num; } else if (base == 16) { result = decToHex(integer) + "." + fractionToBin(fraction); } cout << "转换结果:" << result << endl; return 0; } ``` 该程序可以接受用户输入一个数(包含小数)和该数的进制(2、8、10 或 16),并将该数转换成另外三种进制的形式输出。程序还包含了将浮点数分成整数小数部分小数部分二进制等辅助函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 99
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小余要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值