幽灵 发表于 2023-4-23 14:55

0x00 信息的表示和存储(进制转换)

本帖最后由 幽灵 于 2023-4-23 14:56 编辑

# 进制说明
计算机常用的存储和处理的进制是二进制、八进制、十进制、十六进制
- 二进制,计算机主要使用的
- 八进制,广泛应用与计算机系统
- 十进制,这个主要是给人类看的
- 十六进制,主要用于代码中的表示法

因为 MarkDown 不支持公式,所以我们约定在括号后用`_2`表示进制,`_2`代表二进制,`_8`代表8进制,`_16`代表16进制

# 十进制
这个不过多介绍,就是我们正常使用的数字,逢10进1



# 二进制
使用 0,1 来表示
基数:2
二进制就是0和1,逢二进一
例如:`(101001)_2+(1)_2=(101010)_2`

# 八进制
使用 0,1,2,3,4,5,6,7 来表示
基数:8
逢八进一
表示法:0开头,比如十进制7,八进制用07
例如:`(713)_8+(114)_8=(1027)_8`

# 十六进制
使用 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 来表示
基数:16
逢十六进一
表示法:0x或0X开头,0x10或0X10
例如:`(27b)_16+(18a)_16=(405)_16`

# 进制转换
## 二进制转换成十进制
`00101011` 转换成十进制是 `1*2^0+1*2^1+0*2^2+1*2^3+0*2^4+1*2^5=43`
`(00101011)_2=(43)_10`

## 八进制转十进制
`(745)_8=5*8^0+4*8^1+7*8^2=(485)_10`

## 十六进制转十进制
`(a13)_16=3*16^0+1*16^1+a*16^2=(2579)_10`

## 十进制转其它进制
全部用除法除

# 二进制、八进制、十六进制之间转换
- 八进制,十六进制之间转换都依赖于二进制
- 一个八进制位等于三个二进制位
- 一个十六进制位等于四个二进制位

## 八进制转二进制
|八进制|二进制|
|--|--|
|0|000|
|1|001|
|2|010|
|3|011|
|4|100|
|5|101|
|6|110|
|7|111|

示例:`(456)_8=(100|101|110)_2` 在这里,我用`|` 符号把二进制分成了三个块用来表示八进制位对应的二进制

## 十六进制转二进制

|十六进制|二进制|
|--|--|
|0|0000|
|1|0001|
|2|0010|
|3|0011|
|4|0100|
|5|0101|
|6|0110|
|7|0111|
|8|1000|
|9|1001|
|a|1010|
|b|1011|
|c|1100|
|d|1101|
|e|1110|
|f|1111|

示例:`(89f)_16=(1000|1001|1111)_2`和上面一样,用`|`分割

八进制转十六进制
- 先八进制转二进制
- `(342)_8=(011|100|010)_2`
- 然后二进制转十六进制
- `(1110|0010)_2=(e2)_16`

十六进制转八进制
- 先十六进制转二进制
- `(6f3)_16=(0110|1111|0011)_2`
- 然后二进制转八进制
- `(011|011|110|011)_2=(3363)_8`

鄙人不才 发表于 2023-4-24 03:19

支持了

sjtkxy 发表于 2023-6-24 05:01

页: [1]
查看完整版本: 0x00 信息的表示和存储(进制转换)