按位运算符相对简单。 实质上,当我们使用按位运算符时,我们用二进制编写,10,我们使用按位运算符来表示二进制的整数。

今天,我们将学习如何阅读按位运算符。

我们将首先回顾一些关键术语,然后我们将介绍基本概念八进制和位值,基本的两位数字系统,最后我们将读取一些二进制文件。 所以,让我们开始吧!

 

基本术语

如果我们要阅读二进制文件,我们需要知道一些基本术语。 下面我们来定义一些我们经常使用的关键术语:

 

  • 八位组成一字节(Octet):八位(bit)组成的单元(1 octet
  • 位(Bit):八分之一个字节,以10的形式存在
  • 基本二进制系统:这个系统用来确定一个位上的值

 

如果您对此术语有任何疑问,请将它们留在评论部分或直接给我发消息。 您必须了解这些条款才能继续。

 

现在我们知道一些基本术语,让我们再解释Octet

 

解释Octet

现在,我们已经讨论过1octet8bit组成的定义, 而且,8bit构成1byte

Octet中的每个bit都保持着不同的值。

这些地方的数字编号为07(就像下图的索引一样)。 事情是,他们的编号是相反的。

当我们读/写二进制的时候,我们从右向左阅读。 我们来看一个octet的表示:

python比特模式读取 python 比特位操作_位运算符

图18.1

在这里,我们可以看到我们的8bit与他们各自的数字对应。

现在我们知道一个octet的布局,我们可以讨论基本的二进制系统了。

 

基本二进制系统

现在我们已经介绍了octet的布局以及它的bit上的值,我们可以讨论基本的二进制系统。这是用来根据它在octetbit的位置来得出一个十进制数的系统。

比特可以是10。 1表示该位处于使能状态,而另一个0表示该位处于关闭状态。如果有1 bit0,我们就不计算它的价值。我们只计算使能的位上的值。

顾名思义,二进制系统的基数为两个。为了通过一个bit的数来找到对应的十进制数,我们把这个bit的位数乘以2

接下来让我们来看看二进制系统是怎么工作的。

我们来看看前面的位编号图,但是这次我们将用十进制值标明各个位:

python比特模式读取 python 比特位操作_十进制数_02

图18.2

我们可以看到,通过取2的n次方来表示每一位的值,我们可以计算出相应位的十进制值!

 

计算整个Octer

我们知道如何计算各个位,现在我们可以计算出整个octet的值!

我们将再次看看我们的图,但是这次我们要用10来替代一些bit位上的数。然后,我们将计算这些位置的十进制值,并使用这些值来计算整个octet的值!

我们先看看这些10的分布:

python比特模式读取 python 比特位操作_十进制_03

图18.3

好的,所以我们在这里看到我们有10的混合排列。我们的目标是计算整个octet的总值,所以我们必须排除任何零位(off)的位置。

让我们继续,用红色X标记这些位置,将它们从我们的计算中排除:

 

python比特模式读取 python 比特位操作_位运算符_04

 

图18.4

好吧,现在我们知道需要计算哪些位了,让我们来做。

请记住,我们需要采取2的n次方的方式来计算,n代表位的索引值。您可以参考下面的图表。

让我们继续计算我们的位值,我们将把十进制值放在它们下面:

python比特模式读取 python 比特位操作_十进制_05

图18.4

在那里,现在我们已经计算出了我们各bit位上对应的值,我们只需要将它们总和起来就可以找到octet的值了:

python比特模式读取 python 比特位操作_位运算符_06

图18.5

我们已经成功计算出我们的Octet的值了!二进制数字01100101等于十进制的101。

 

总结

今天我们介绍Octet/Bit,二进制系统,以及如何将二进制转换为十进制(整数)的方法。我们这一轮没有做任何代码介绍,因为我们要继续深入之前了解这些基本知识,我们不会盲目介绍Python知识的!

下一次我们将介绍如何在Python中实际使用按位运算符做计算。

感谢您的阅读!

 

练习

请计算如下二进制代表的十进制数

1.  1110          8+4+2 = 14

2.  1010          8+0+2+0 = 10

3.  0010           0+0+2+0 = 2

4.  1000 0010      

5.  1111 1111

6.  0010 1100

7.  1010 0010 1100 1001

8.  0101 0000 1010 0001

9.  1110 1111 1111 0111