各进制数之间的转换

本文详细介绍了十进制与其他进制(如二进制、八进制、十六进制)之间的转换原理,包括整数部分和小数部分的转换方法,并提供了从十进制到二、八、十六进制的转换实现。同时,阐述了不同进制之间的转换技巧,如二进制与八进制、二进制与十六进制的转换方法,以及如何通过二进制作为中间步骤进行转换。
部署运行你感兴趣的模型镜像

【十进制->其他进制】

十进制数N和其他D进制数转换原理:

N = (N / D) * D + N % D (/为整除运算,%为求余运算)

 

1. 整数部分:除D取余,倒着读。每次将整数部分除以D,余数为该位权上的数,商继续除以D。。。直到商为0,读数时从最后一个余数读起,直到第一个余数。

举例:1348转换成8进制为2504。

 

  N          N / 8        N % 8

1348       168            4 

168          21             0

21            2               5

2              0               2

倒着读:2504

 

2. 小数部分:乘2取整,正着读。将小数部分乘以D,取整数部分,剩下的部分继续乘以D。。。直到小数部分为0。如果永远不为0,按照精度要求取舍。

举例:0.125 换算成二进制为0.001

 

N                      N * 2       整数部分           小数部分

0.125               0.25           0                     0.25

0.25                 0.5             0                     0.5

0.5                   1                1                     0

正着读:0.001

 

十进制->八进制,间接法:十进制 -> 二进制 -> 八进制

十进制->十六进制,间接法:十进制 -> 二进制 -> 十六进制

 

以下实现从十进制到二、八、十六进制的转换。

-小数部分可能会有点问题,因为浮点数不能直接和0比较大小,但是在VS2010里面运行起来好像是正确的,暂时这样吧。

-小数部分默认取5位精度,因为可能出现总也乘不完的情况。

 

 

 

【其他进制->十进制】

按权相加。即将D进制每位上的数乘以权(乘以1,乘以D, 乘以D的平方,乘以D的四次方。。。。),然后相加得到十进制数。

 

【二进制与八进制】

1. 二进制->八进制

取三合一。从二进制的小数点为分界点,向左(右)每三位取成一位,变成相应的八进制数,合在一起。

举例:101110.101 -> 56.5

2. 八进制->二进制

取一分三。将八进制数的每一位分解成三位二进制数,再合起来,小数点位置不变。

举例:67.54 -> 110111.101100 ->110111.1011

 

【二进制与十六进制】

和二进制与八进制类似,不过是取四合一或者取一分四。

 

【八进制与十六进制】

不能直接互相转换,通过二进制做中间人,比如八进制 -> 二进制 -> 十六进制,小数点位置不变。

 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

在 Python 中,各进制数之间转换方法如下: ### 十进制与二进制的转换 - **二进制十进制**:使用 `int()` 函数,将二进制字符串作为第一个参数,2 作为第二个参数传入。 ```python binary_string = '1010' decimal_number = int(binary_string, 2) print(decimal_number) # 输出: 10 ``` - **十进制二进制**:使用 `bin()` 函数,传入十进制数字,会返回一个以 `0b` 开头的二进制字符串。 ```python decimal_number = 10 binary_string = bin(decimal_number) print(binary_string) # 输出: '0b1010' ``` ### 十进制八进制转换 - **八进制十进制**:使用 `int()` 函数,将八进制字符串作为第一个参数,8 作为第二个参数传入。 ```python octal_string = '12' decimal_number = int(octal_string, 8) print(decimal_number) # 输出: 10 ``` - **十进制八进制**:使用 `oct()` 函数,传入十进制数字,会返回一个以 `0o` 开头的八进制字符串。 ```python decimal_number = 10 octal_string = oct(decimal_number) print(octal_string) # 输出: '0o12' ``` ### 十进制与十六进制的转换 - **十六进制十进制**:使用 `int()` 函数,将十六进制字符串作为第一个参数,16 作为第二个参数传入。 ```python hex_string = 'a' decimal_number = int(hex_string, 16) print(decimal_number) # 输出: 10 ``` - **十进制十六进制**:使用 `hex()` 函数,传入十进制数字,会返回一个以 `0x` 开头的十六进制字符串。 ```python decimal_number = 10 hex_string = hex(decimal_number) print(hex_string) # 输出: '0xa' ``` ### 非十进制之间转换 Python 没有直接提供从一种非十进制转换到另一种非十进制的函数,但是可以通过先转换十进制转换到目标进制的方式来实现。例如,将二进制转换八进制: ```python binary_string = '1010' decimal_number = int(binary_string, 2) octal_string = oct(decimal_number) print(octal_string) # 输出: 0o12 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值