进制(二)

博客先回顾了其他进制转十进制的内容,重点介绍十进制转其他进制的原理与计算方法,如十进制转二进制的计算示例。还提到二进制与十六进制的关系,一个十六进制可用四个二进制表示,同时说明了计算机采用二进制和十六进制的原因。

上篇,已经说了什么是进制,以及别的进制如何转成10进制。

比如 二进制 10 咱说的是1个二加0个一,这样的说法就已经是十进制了。。结果当然是十进制

这次来说下,十进制怎么转其他进制。

比如 3 转换成二进制,3 就是 1个二加1个一 就是 11

5转换成二进制 就是 1个四加0个二加1个一 就是101

9 就是 1个八加1个1 就是 1001 。。。

主要1 -> 1 2 -> 10 4 -> 100 8 -> 1000

我想应该清楚转换的原理了。那么如何计算呢?

比如9

9/2 = 4 …1

4/2 = 2…0

2/2 = 1…0

1/2 = 0…1

余数从下往上写就是 1001

在这里插入图片描述

用十进制来举例子。123

123 / 10 = 12 … 3

12 / 10 = 1 … 2

1 / 10 = 0 … 1

不用多说了吧

十六进制同理。

然后说下二进制和十六进制

一个二进制 占一bit 一个十六进制占4bit也就是四个二进制正好可以表示一个十六进制。
在这里插入图片描述

计算机采用二进制是应为,对于电路用0,1高电平和低电平是最方便的。采用十六进制是应为方便阅读。

### 进制、八进制和十六进制的表示方法 在编程中,不同进制的数字可以通过特定的前缀进行表示: - **进制**:以 `0b` 开头。例如,`0b1010` 表示进制的十进制数 10。 - **八进制**:以 `0` 开头。例如,`0123` 表示八进制的十进制数 83。 - **十六进制**:以 `0x` 开头。例如,`0x1A` 表示十六进制的十进制数 26[^3]。 ### 转换方法 #### 十进制进制、八进制、十六进制 - **进制转换**:使用 `decbin()` 函数将十进制数转换为进制字符串。例如,`decbin(520)` 返回 `1000001000`[^2]。 - **八进制转换**:使用 `decoct()` 函数将十进制数转换为八进制字符串。例如,`decoct(520)` 返回 `1010`[^2]。 - **十六进制转换**:使用 `dechex()` 函数将十进制数转换为十六进制字符串。例如,`dechex(520)` 返回 `208`。 #### 进制、八进制、十六进制 → 十进制 - **进制转换**:使用 `bindec()` 函数将进制字符串转换为十进制数。例如,`bindec("1000001000")` 返回 `520`。 - **八进制转换**:使用 `octdec()` 函数将八进制字符串转换为十进制数。例如,`octdec("1010")` 返回 `520`[^2]。 - **十六进制转换**:使用 `hexdec()` 函数将十六进制字符串转换为十进制数。例如,`hexdec("208")` 返回 `520`。 #### 任意进制之间的转换 - 使用 `base_convert()` 函数可以在任意进制之间进行转换。例如: - `base_convert("520", 10, 2)` 将十进制数 520 转换为进制,结果为 `1000001000`[^2]。 - `base_convert("520", 10, 16)` 将十进制数 520 转换为十六进制,结果为 `208`[^2]。 - `base_convert("520", 10, 5)` 将十进制数 520 转换为五进制,结果为 `4040`[^2]。 ### 利用进制作为转换桥梁 在进行进制转换时,进制可以作为高效的“桥梁”来简化计算。例如: - **十进制 → 八进制**:可以先将十进制数转换为进制,再将进制数分组为每3位,最后转换为八进制。例如,十进制数 156 转换为进制是 `10011100`,分组为 `010 011 100`,对应的八进制是 `234`[^1]。 - **十进制 → 十六进制**:可以先将十进制数转换为进制,再将进制数分组为每4位,最后转换为十六进制。例如,十进制数 255 转换为进制是 `11111111`,分组为 `1111 1111`,对应的十六进制是 `FF`[^1]。 ### 示例代码 以下是一个简单的 PHP 示例代码,展示如何进行不同进制之间的转换: ```php <?php $dec = 520; // 十进制 // 十进制进制 echo "十进制 $dec 转换为进制: " . decbin($dec) . "\n"; // 输出: 1000001000 // 十进制 → 八进制 echo "十进制 $dec 转换为八进制: " . decoct($dec) . "\n"; // 输出: 1010 // 十进制 → 十六进制 echo "十进制 $dec 转换为十六进制: " . dechex($dec) . "\n"; // 输出: 208 // 进制 → 十进制 $bin = "1000001000"; echo "进制 $bin 转换为十进制: " . bindec($bin) . "\n"; // 输出: 520 // 八进制 → 十进制 $oct = "1010"; echo "八进制 $oct 转换为十进制: " . octdec($oct) . "\n"; // 输出: 520 // 十六进制 → 十进制 $hex = "208"; echo "十六进制 $hex 转换为十进制: " . hexdec($hex) . "\n"; // 输出: 520 // 任意进制转换 echo "十进制 $dec 转换为进制: " . base_convert($dec, 10, 2) . "\n"; // 输出: 1000001000 echo "十进制 $dec 转换为十六进制: " . base_convert($dec, 10, 16) . "\n"; // 输出: 208 echo "十进制 $dec 转换为五进制: " . base_convert($dec, 10, 5) . "\n"; // 输出: 4040 ?> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值