📜  数字逻辑中的二进制表示(1)

📅  最后修改于: 2023-12-03 15:10:17.602000             🧑  作者: Mango

数字逻辑中的二进制表示

在数字逻辑中,二进制表示是一种表示数字的方式,它只包含0和1两种数字,它是计算机内部表示数字和实现计算机加减乘除等运算的基础。

为什么使用二进制?

计算机只能理解二进制,这是因为计算机内部是由逻辑电路组成的,逻辑电路中只能使用两种状态,开和关,而二进制正好只由0和1两种数字组成,所以计算机只能使用二进制表示数字和进行运算。

其次,使用二进制可以极大地简化逻辑电路,例如,使用二进制表示数字时,比如一个4位二进制数,只需要4个开关就可以表示,而使用十进制则需要10个开关,显然,使用二进制可以极大地简化逻辑电路。

最后,使用二进制还可以省略一些繁琐的计算,例如,如果要对二进制数进行左移或右移操作,直接将二进制数左移或右移几个位即可,而使用十进制则需要进行乘除运算,显然,使用二进制可以简化运算。

二进制表示示例

二进制数是由0和1两种数字组成的数字。例如,二进制数1011表示的是1 × 2^3 + 0 × 2^2 + 1 × 2^1 + 1 × 2^0 = 11。

二进制数可以用前缀0b表示,例如,0b1011表示的也是11,只不过这是计算机内部的表示方式。

num = 0b1011
print(num)  # 输出11

二进制的长度通常使用位(bit)作为计量单位,一位二进制表示一个0或1,8位二进制组成一个字节(byte),32位二进制组成一个单精度浮点数。

二进制运算

二进制运算包括:

位运算
  • 按位与(&):两个二进制数对应位取与,例如,0b1011 & 0b1101 = 0b1001;
  • 按位或(|):两个二进制数对应位取或,例如,0b1011 | 0b1101 = 0b1111;
  • 按位异或(^):两个二进制数对应位不同则为1,相同则为0,例如,0b1011 ^ 0b1101 = 0b0110;
  • 按位取反(~):一个二进制数每一位取反,例如,~0b1011 = 0b0100。
a = 0b1011
b = 0b1101
print(a & b)    # 输出0b1001
print(a | b)    # 输出0b1111
print(a ^ b)    # 输出0b0110
print(~a)       # 输出-0b1100
移位运算
  • 按位左移(<<):将二进制数向左移动n位,低位补0,例如,0b1011 << 2 = 0b110100;
  • 按位右移(>>):将二进制数向右移动n位,高位补0或补1,例如,0b1011 >> 2 = 0b0010。
a = 0b1011
print(a << 2)   # 输出0b110100
print(a >> 2)   # 输出0b10
总结

二进制是计算机内部表示数字和实现计算机加减乘除等运算的基础,掌握二进制的表示和运算对于程序员来说是非常重要的。我们可以使用0b前缀表示二进制数,使用位运算和移位运算实现二进制数的加减乘除等运算。