如何学Python 第十八课 初见位运算

在上一篇文章里我们介绍了类和面向对象为编程带来的方便。今天我们来说点稍微简单的——位运算。

位运算会用到位运算符。但是我们今天不介绍具体的代码上的操作,而是主要介绍一些概念,关于octet、bit以及进制转换。

基本概念

学二进制之前要首先明白一些概念。

Octet:八个‘位’(一字节)

位(bit):一个‘位’是一个0或者一个1.就是一个二进制位。

二进制数位系统:通过这个‘系统’我们可以进行进制之间的转换

如果你对上面的概念有任何的疑问,你可以直接在下面留言。为了看懂接下来的东西,你必须对以上的概念非常理解。

Octet

刚才说一个octet由8个位组成。八个位也是一个字节。每个在octet里的bit都表示着不同的数值。我们可以从右到左把这些位标记成0到7(就像数组的索引一样)。这在进行进制转换的时候很有用。让我们来看看octet的样子:

我们可以看到标记着他们的序号的八个数。

二进制数位系统

在理解上面内容的基础之上,我们来讲二进制数位系统。通过这个系统我们可以轻松的判断出一个二进制数对应的十进制值的多少。

一个bit,要么是1要么是0.我们算二进制的时候不算0的位,只算有1的位。算的时候每位的值都是2的索引次幂,这里的索引就是上面说的那个。最后把他们相加,就是十进制的值。

举个例子算一下:

拿这个举例。

先把0去掉:

换算幂值:

相加:

总结

今天主要介绍了octet和bit,以及二进制数值系统以及二进制转十进制的方法。今天不介绍任何的代码,因为无论你做什么或者写什么,一定要先清楚你到底在干什么才行。现在我们不再是两眼一抹黑了。我们稍后 介绍具体的位运算符。

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

原文发表时间:2016-08-17

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏码云1024

FileOutputStream&FileInputStream&异常的使用

34370
来自专栏BaronTalk

Java8新特性第3章(Stream API)

Stream作为Java8的新特性之一,他与Java IO包中的InputStream和OutputStream完全不是一个概念。Java8中的Stream是对...

368100
来自专栏Petrichor的专栏

什么是:语法糖、语法盐、语法糖精

57450
来自专栏青玉伏案

PHP精选数组函数

编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数。在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大...

24880
来自专栏Phoenix的Android之旅

重构 - 完全不用 if-else 可能吗?

上次那篇重构-为什么 if-else 不是好代码 说到代码中的 if-else会随着代码量的增加,在迭代的过程中变的越来越难以维护, 然后用工厂模式的思路可以把...

9420
来自专栏Golang语言社区

第九节 Go语言循环语句

干货来了!!!为了让更多的小伙伴喜欢Golang、加入Golang之中来,Golang语言社区发起人彬哥联合业界大牛共同推出了Go语言基础、进阶、提高课程,目前...

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

编程语言函数多返回值处理方式排名

一个函数一个返回值 , 这好像跟祖宗定下的规则似的,各个时代主流编程语言几乎都严格遵守着。然而, 在实际情况下, 程序员写代码经常会碰到一个函数会返回多个返回值...

42570
来自专栏C语言及其他语言

[每日一题]平移运动

估计大家今天忙开学迎新什么的都忙不过来了吧,今天介绍的这题呢,跟之前的题很像,也是数组的题 题目描述 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成...

28450
来自专栏Java呓语

工厂方法模式(延迟到子类来选择实现)

1、工厂方法模式理念介绍 2、它与简单方法模式的区别 3、推荐使用工厂方法的场景 4、在Android 源码中的应用

8840
来自专栏小詹同学

【记录帖】(No.002)从零打卡刷Leetcode

小詹一直觉得自己编程能力不强,想在网上刷题,又怕不能坚持。不知道有木有和小伙伴和小詹一样想找个人一起刷题呢?欢迎和小詹一起定期刷leetcode,每周一周五更新...

15040

扫码关注云+社区

领取腾讯云代金券