欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

重写后:转换二进制、八进制、十六进制以及小数之间的相互转换方法

最编程 2024-07-20 18:34:45
...

文章目录

  • 一、进制表示符号
  • 二、十进制转换为二进制、八进制、十六进制
    • 2.1、十进制转换为二进制
    • 2.2、十进制转换为八进制
    • 2.3、十进制转化为十六进制
  • 三、二进制、八进制、十六进制转换为十进制
    • 3.1、二进制转换为十进制
    • 3.2、八进制转换为十进制
    • 3.3、十六进制转换为十进制
  • 四、二进制转换为八进制、十六进制
    • 4.1、二进制转换为八进制
    • 4.2、二进制转换为十六进制

一、进制表示符号

二进制:B 用0和1表示
八进制:O 用0、1、2、3、4、5、6、7
十进制:D 用0、1、2、3、4、5、6、7、8、9
十六进制:H 用0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

二、十进制转换为二进制、八进制、十六进制

2.1、十进制转换为二进制

整数部分:整数部分除2取余数,再取倒序
小数部分:小数部分乘2取整,再顺序取(小数部分为零时,即为乘完或者按题目要求精度要求取小数后几位)

eg:68.125D = 1000100.001B(精确到小数后4位)
解析:
68/2=34…0
34/2=17…0
17/2=8…1
8/2=4…0
4/2=2…0
2/2=1…0
1/2=0…1
整数部分倒序取为:1000100

0.125×2=0.25…0
0.25×2=0.5…0
0.5×2=1.0…1
小数部分顺序取为:001

2.2、十进制转换为八进制

整数部分:整数部分除8取余数,再取倒序
小数部分:小数部分乘8取整,再顺序取(小数部分为零时,即为乘完或者按题目要求精度要求取小数后几位)

eg:57.5D = 71.4O(精确到小数后3位)
解析:
57/8=7…1
7/8=0…7
整数部分为:71

0.5×8=4.0…4
小数部分为:4

2.3、十进制转化为十六进制

整数部分:整数部分除16取余数,再取倒序
小数部分:小数部分乘16取整,再顺序取(小数部分为零时,即为乘完或者按题目要求精度要求取小数后几位)

eg:69.625D=45.aH(精确到小数后2位)
解析:
69/16=4…5
4/16=0…4
整数部分为:45

0.625×16=10…a
小数部分为:a

三、二进制、八进制、十六进制转换为十进制

3.1、二进制转换为十进制

整数部分:每个数去乘以2的相应次方
小数部分:小数点后则是从左往右(从-1一直往后)。

eg:00101010.01B = 42.25D
解析:
最后一位下标为0,从0开始,向左记数
整数部分:
0 0 1 0 1 0 1 0 ---->二进制数(整数部分)
7 6 5 4 3 2 1 0 ---->下标
计算:
00101010B=0×2^6 + 0×2^5 + 1×2^5 + 0×2^4 + 1×2^3 + 0×2^2+ 1×2^1 + 0×2^0 = 42D

小数部分:
0 1 ---->二进制数(整数部分)
-1 -2 ---->下标
计算:
0.01B = 0×2^(-1) + 1× 2^(-2) = 0.25D

3.2、八进制转换为十进制

整数部分:每个数去乘以8的相应次方
小数部分:小数点后则是从左往右(从-1一直往后)。

eg:71.4O = 57.5D
解析:
最后一位下标为0,从0开始,向左记数
整数部分:
7 1 ---->八进制数(整数部分)
1 0 ---->下标
计算:
71.4O=7×8^1 + 1×8^0 = 57D

小数部分:
4 ---->二进制数(整数部分)
-1 ---->下标
计算:
0.4O = 4×8^(-1)= 0.5D

3.3、十六进制转换为十进制

整数部分:每个数去乘以16的相应次方
小数部分:小数点后则是从左往右(从-1一直往后)。

eg:a.2H = 10.125D
解析:
最后一位下标为0,从0开始,向左记数
整数部分:
a ---->八进制数(整数部分)
0 ---->下标
计算:
aH=a×16^0 = 10D

小数部分:
2 ---->二进制数(整数部分)
-1 ---->下标
计算:
0.2H = 2×16^(-1)= 0.125D

四、二进制转换为八进制、十六进制

4.1、二进制转换为八进制

取三合一法:以小数点为分界点,向左(向右)每三位取成一位(不足用零补齐),接着将这三位二进制按权相加,得到的数就是一位八位二进制数,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。

eg:100011.01110B=43.34O
整数部分:
100 011
210 210 ------>下标
计算:
100=1×2^2 + 0×2^1 + 0×2^0 =4
011=0×2^2 + 1×2^1 + 1×2^0=3
100011B = 43O

小数部分
011 100
210 210
计算:
011=0×2^2 + 1×2^1 + 1×2^0=3
100=1×2^2 + 0×2^1 + 0×2^0=4
0.01110B=0.34O

4.2、二进制转换为十六进制

取四合一法:以小数点为分界点,向左(向右)每四位取成一位(不足用零补齐),接着将这四位二进制按权相加,得到的数就是一位十六位二进制数,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。

eg:11001.001B=19.2H
整数部分:
0001 1001
3210 3210 ---->下标
计算:
0001=1×2^3 + 1×2^2 + 0×2^1 + 0×2^0=1
1001=1×2^3 + 0×2^2 + 0×2^1 + 0×2^0=9
11001B=19H

小数部分
0010 ()不足四位自动补0
3210 ---->下标
计算:
0010 = 0×2^3 + 0×2^2 + 1×2^1 + 0×2^0=2
0.001B=2H

八进制转换成十六进制算法通常有两种方法:
1、先将八进制转换成二进制,再将二进制转换成十六进制
2、先将八进制转换成十进制,再将十进制转换成十六进制

参考的文章:https://blog.****.net/zhouym_/article/details/88360625

推荐阅读