如何学Python 第十八课 位运算符介绍

欢迎回来! 在我们上一次的培训课程中,我们介绍了类以及OOP如何使编程/脚本更容易。 今天我们将休息一下,并且介绍一些相当简单的按位运算符。

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

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

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

基本术语

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

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

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

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

解释Octet

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

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

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

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

图18.1

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

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

基本二进制系统

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

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

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

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

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

图18.2

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

计算整个Octer

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

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

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

图18.3

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

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

图18.4

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

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

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

图18.4

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

图18.5

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

总结

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

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

感谢您的阅读!

练习

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

1. 1110

2. 1010

3. 0010

4. 1000 0010

5. 1111 1111

6. 0010 1100

7. 1010 0010 1100 1001

8. 0101 0000 1010 0001

9. 1110 1111 1111 0111

原文发布于微信公众号 - 玄魂工作室(xuanhun521)

原文发表时间:2018-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏行者悟空

我眼中的并发编程——Fork/Join模型

2055
来自专栏進无尽的文章

如何优化冗长的条件语句

【1】尽量少用 else 尽量多用 if reture 的语法方式。 【2】字典的逻辑对应转化作用。 【3】用多态替代条件语句 【4】策略模式,继承重写,...

1631
来自专栏小樱的经验随笔

51Nod 1182 完美字符串(字符串处理 贪心 Facebook Hacker Cup选拔)

1182 完美字符串 ?             题目来源:                         Facebook Hacker Cup选拔    ...

2967
来自专栏Java爬坑系列

【JAVA零基础入门系列】Day3 Java基本数据类型

  前两篇已经将开发环境搭建完成,如果你已经按之前的教程按部就班的完成了部署,那么世界上最优秀的编程语言之一和世界上最优秀的IDE之一已经出现在你的电脑上(此处...

2278
来自专栏带你撸出一手好代码

从PHP代码的细节说起

因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码 ? 这段程序与那个BUG有密切的关系。 我来回反复的捉摸这段代码...

4397
来自专栏量子位

干货 | 如何写一个更好的Python函数?

《Writing Idiomatic Python》一书的作者在Medium上发表了一篇文章,给出了6个建议。

972
来自专栏

shell之sort命令

1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。 [rocro...

2137
来自专栏云飞学编程

python学习,数据分析系列工具,初识numpy

其实,数据分析看着很高大上,也很实用,但是真的很枯燥啊。。。。但是它又不得不学,毕竟数据分析对很多工作是很有帮助的,比如爬虫,抓到的数据,不论是保存到文件还是数...

892
来自专栏机器学习算法与Python学习

Python中的实用小技巧

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 话说python是一个大杂会,既可以...

3455
来自专栏take time, save time

你所能用到的BMP格式介绍(二)

一、可能你忽视的基础         在正式开始之前,我不得不从最基本的地方开始,因为这些地方大多数人会忽视的一干二净,如果不在开始进行说明,那么在后面一定会有...

3007

扫码关注云+社区

领取腾讯云代金券