进制转换

126 阅读3分钟

数字进制转换

十进制转十六进制

整数部分:整数部分除以16,商再继续除以16,直到商为0,然后倒取余数(即从最后一个余数开始取)

小数部分:小数部分乘以16,取整,余数部分再继续乘以16,直到积为整数

十进制转八进制

整数部分:整数部分除以8,商再继续除以8,直到商为0,然后倒取余数

小数部分:小数部分乘以8,取整,余数部分再继续乘以8,直到积为整数

十进制转二进制

整数部分:整数部分除以2,商再继续除以2,直到商为0,然后倒取余数

小数部分:小数部分乘以2,取整,余数部分再继续乘以2,直到积为整数

以十进制 90.78125为例:
转十六进制:
90÷16=5······10 →A
5÷16=0······55
0.78125×16 = 12.512(C)
0.5×16 = 88 
结果为5A.C8

转八进制:
90÷8=11······2
11÷8=1······3
1÷8=0······1
0.78125×8=6.256
0.25×8 = 2
结果132.62

转二进制:
90÷2=45······0
45÷2=22······1
22÷2=11······0
11÷2=5······1
5÷2=2······1
2÷2=1······0
1÷2=0······1
0.78125×2 = 1.56251
0.5625×2=1.1251
0.125×2=0.250
0.25×2=0.50
0.5×2=11
结果1011010.11001
其他进制转十进制

加权求和法

十六进制转十进制:
5A.C8 = 5×16^1 + 10×16^0 + 12×16^-1 + 8×16^-2 = 80 + 10  +0.75 + 0.03125 = 90.78125

八进制转十进制:
132.62 = 1×8^2 + 3×8^1 + 2×8^0 + 6×8^-1 + 2×8^-2 = 64 + 24 + 2 + 0.75 + 0.03125 = 90.78125

二进制转十进制:
1011010.11001 =  1×2^6 + 0×2^5 + 1×2^4 + 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 + 1×2^-1 + 1×2^-2 +0×2^-3 + 0×2^-4 + 1×2^-5 = 64 + 0 + 16 + 8 + 0 + 2 + 0 + 0.5 + 0.25 + 0.03125 = 90.78125

字符串转进制

英文转进制

将字符串转为进制,需要将每一个字符转为相应进制,然后拼接起来

image.png

以hello world为例:
查询ascii表,(ASCII是二进制表示再转为十进制,上图为转换好后的表)十进制为例
h → 104  e → 101  l → 108  l → 108  o → 111  空格 → 32
w → 119  o → 111  r → 114  l → 108  d → 100
结果为104 101 108 108 111 32 119 111 114 108 100
中文转进制

找到中文的区位码,区位码转为十六进制,再加上2020转为国标码,再加上8080转为机内码,该机内码则为中文在计算机内的十六进制表示

汉字啊区位码是1601,将区位码转为十六进制为1001(16100101)
在ASCII中
区位码的十六进制表示 + 2020 = 3021(国标码)
3021(国标码) + 8080 = B0A1(机内码)(1+0=1,2+8=A,0+0=0,3+8=B)