二进制、十进制、十六进制

本文详细介绍了二进制、十进制与十六进制的基本概念及其相互转换方法,并深入探讨了计算机中数据的不同表示形式,包括原码、反码及补码等。

一、进制说明

1.1、十进制(decimalism)

0—9 共 10 个
9+1=10(逢十进一),19+1=20(逢十进一),29+1=30(逢十进一),,,99+1=100(逢十进一)

1.2、二进制(binary)

0—1 共 2 个
0+1=1(逢二进一),1+1=10(逢二进一),10+1=11(逢二进一),11+1=100(逢二进一),100+1=101(逢二进一)

1.3、十六进制(hex)

0—9—A—F 共 16 个
9+1=A,A+1=B,B+1=C,C+1=D,D+1=E,E+1=F,F+1=10(逢十六进一),10+1=11,,,19+1=1A(逢十六进一),1A+1=1B,1B+1=1C,,,1F+1=20(逢十六进一),20+1=21,21+1=22

二、进制转换

2.1、二进制转十进制(B—>D)
在这里插入图片描述

2.2、十进制转二进制(D—>B)
在这里插入图片描述

2.3、十六进制转十进制(H—>D)
在这里插入图片描述

2.4、十进制转十六进制(D—>H)
在这里插入图片描述

2.5、十六进制转二进制(H—>B)
在这里插入图片描述

2.6、二进制转十六进制(B—>H)
在这里插入图片描述

三、数据

数据包含数值数据和非数值数据,数值

3.1、有符号数据

1、符号:用0、1表示正、负号,放在数值的最高位。

2、小数点(小数点不占位数):

  • 定点数:约定小数点隐含在某一位置上。
  • 浮点数:小数点可以任意浮动。

1、原码

最高位表示数的符号,其他位表示数值。例:假定计算机的存储字长是8位,
在这里插入图片描述

2、反码

  • 正数的反码和原码相同。
    在这里插入图片描述
  • 负数的反码是由其原码的符号位不变,其余位按位取反。
    在这里插入图片描述

3、补码

  • 正数的补码和原码相同。
    在这里插入图片描述
  • 负数的补码是由其原来的符号位不变,其余位按位取反,再在最低位加1。
    在这里插入图片描述
### 二进制十进制十六进制之间的转换 #### 二进制十进制 要将二进制数转换为十进制数,可以采用按位权展开的方法。每一位上的数值乘以该位对应的权重(即$2^n$),其中$n$是从右向左的位置索引,起始位置为0。 例如,对于二进制数`1011`: $$ (1 \times 2^3) + (0 \times 2^2) + (1 \times 2^1) + (1 \times 2^0)=8+0+2+1=11_{\text{decimal}} $$ 因此,二进制`1011`等于十进制中的`11`[^1]。 ```python binary_number = "1011" decimal_value = int(binary_number, 2) print(f"Binary {binary_number} to decimal is: {decimal_value}") ``` #### 十进制二进制 当需要把一个十进制整数转换成二进制形式时,可以通过不断地除以2并记录余数来实现这一过程;最后得到的结果就是这些余数逆序排列而成的新字符串表示法。 比如要把十进制的`11`转化为二进制,则操作如下: | 步骤 | 商 | 余数 | |------|-------|------| | 1 | 5 | 1 | | 2 | 2 | 1 | | 3 | 1 | 0 | | 4 | 0 | 1 | 所以最终结果是`1011`。 ```python decimal_number = 11 binary_representation = bin(decimal_number)[2:] # 去掉前缀 '0b' print(f"Decimal {decimal_number} to binary is: {binary_representation}") ``` #### 二进制十六进制 在处理较大范围内的数据时,通常会使用更紧凑的形式——十六进制。每四位二进制数字对应一位十六进制字符。具体来说,先分组再映射至相应的字母或数字即可完成此变换。 举个例子,给定二进制串`10110101`,将其分为两部分:`1011` 和 `0101` ,分别对应于十六进制下的B和5,故而整个序列变为`B5`。 ```python binary_string = "10110101" hexadecimal_result = hex(int(binary_string, 2))[2:].upper() # 转换为大写的十六进制 print(f"Binary string '{binary_string}' converts to hexadecimal as: {hexadecimal_result}") ``` #### 十六进制二进制 反过来,如果有一个十六进制值想要获得其等价的二进制表达方式,那么只需要按照上述原则反向执行就可以了:每一个十六进制字符都代表四个连续的二进制位。 比如说,对于十六进制数`A9`而言,它所对应的二进制编码应该是`10101001`。 ```python hexadecimal_input = "A9" binary_output = format(int(hexadecimal_input, 16), '0>8b') # 确保至少有8位宽 print(f"Hexadecimal value '{hexadecimal_input}' corresponds to the binary sequence: {binary_output}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值