pick up Python

给大家说一下,我要开始学习 Python 了, Python 最近很火嘛(小样,别太膨胀),不过还好我是个程序员,只不过之前玩的不是 Python 语言,所以接下来我要 pick up Python了。是的,没错,pick up,以后你告诉别人说你要学 python,你可以很装逼的告诉他:“老子要pick up Python了!”

人生苦短,我特么要pick up Python~~~
人生苦短,我特么要pick up Python~~~

而这里呢,和其它的学习 Python 的号不一样,不会乱七八糟,我会形成一个体系,也就是 Python 从0到1的整个体系,而且我也不想严肃,我要让我的这个教程呢,看起来好笑,好笑之中又能真正的学到Python的精髓,所以我会下功夫去学习,去消化,然后再转化成风趣幽默的文章,让大家看起来像看小黄文一样轻松,这是我想做的事情。

听到小黄文,想想还有点鸡动呢 (你可别乱来啊!)
听到小黄文,想想还有点鸡动呢 (你可别乱来啊!)

为什么要学 Python

对了,还没告诉你为什么要学 Python 呢,我来说说这几点就已经足够:

Python
Python
  1. 现在 Python 已经成为世界上最流行的编程语言之一了,而且大部分的Linux系统,MacOS系统都直接内置了 Python ,就问你牛逼不?
  1. 现在连小学生都开始学习 Python 了,Python 已经纳入了某地区小学的教材了。Pyhon 已然成为了编程界的 “网红”,现在程序员们可能不知道Cobol,Basic,Pascal,Perl,Ruby,但没有一个程序员不知道Python的。
  1. 上手简单,现在很多从来没接触过编程的人都着手开始学习Python 了,我有一朋友,之前没有任何编程基础,学了半年多找到了份工作,工资12k妥妥的,不过不要去羡慕别人的数字,人家背后的努力你没看到而已,如果你现在也是没有任何基础或者想要从0学习 Python ,那么你来对地方了!因为人生苦短,我们一起搞 Python。
  1. web开发,科学计算,3D建模,人工智能,嵌入式开发,云计算,大数据等等都特么能看到Python的身影,不知道你知不知道NASA(美国宇航局)使用Python来开发用于系统集成和卫星,火箭的测试自动化么?还有网易,腾讯,搜狐,金山,豆瓣,YouTube ,google,雅虎(太多,举例不完)都在用Python。所以这么牛逼,何不 pick up python 呢?
  1. 用 Python 可以做很多事情,可以爬取你想要的数据,可以做外挂,之前的微信跳一跳,12306抢票等都可以用Python实现,还有很多数据分析,项目系统,聊天系统,游戏等等多了去了。所以这么牛逼,何不 pick up Python 呢?
是不是真的啊?又想骗我学习~
是不是真的啊?又想骗我学习~

不妨再来看下Python官网的介绍,他说这些是使用Python的人宁愿不使用其他任何东西的一些原因

python
python
  1. Pyhon很牛逼…而且很快;

  2. 可以和别人一起P;

  3. 在哪都可以搞;

  4. 非常友好&学习简单;

  5. 开放。

好棒!我要pick up Python了,接下来将是学习python的正确势!
好棒!我要pick up Python了,接下来将是学习python的正确势!

别怕,Python 不是蟒蛇

PS:虽然 Python 的中文意思是「蟒蛇」,但是 Python 语言的创造者 Guido van Rossum 是因为超喜欢英国广播公司的节目「蟒蛇飞行马戏」而命名这个语言的,所以你可别以为Python 创造者是个喜欢蟒蛇的怪叔叔。

python 创始人
python 创始人

Python : Hello World !

不管学什么编程语言,在一开始入门的时候,都会从「Hello Wrold」开始,这已经成为编程界的不成文规定。

在1972年的时候,有个叫科比 布莱恩的人使用B语言撰写了第一个使用参数的 Hello World 相关程序。说明一下:此科比非彼科比,这哥们当然不是我的那位打NBA的偶像啊!

如果科比不打NBA而去编程,会是怎么样呢?
如果科比不打NBA而去编程,会是怎么样呢?
科比:你们给我悠着点!!
科比:你们给我悠着点!!

看下图!这就是由 科比 布莱恩 撰写的「Hello Wrold」程序:

Hello Wrold
Hello Wrold

自此,Hello World 成为了计算机程序员学习新的编程语言的传统美德!

当然说到传统美德,尊老爱幼也是必须的。其实我现在发现大多数年轻人素质都比较高,反而是那些年长的老人,倚老卖老,所以以后问路尽量找年轻人。
当然说到传统美德,尊老爱幼也是必须的。其实我现在发现大多数年轻人素质都比较高,反而是那些年长的老人,倚老卖老,所以以后问路尽量找年轻人。

那么,我们学习 Python 也从「Hello World」开始吧!

安装 Python

如果你用的 Mac 或者 Linux 的话,那么你就不需要安装了,因为系统已经内置 Python 了,如果是 Windows 系统的话,安装也很简单,比安装 LOL 英雄联盟还简单。所以我相信不用我说,你也知道怎么安装,如果你连软件都不会安装,那么可以不用关注我了。

说的好屌啊,不知道是不是真的?
说的好屌啊,不知道是不是真的?

你可以直接访问 Python 的官网 下载最新的版本。

下载 python
下载 python

在这里告诉一下完全没经验的朋友们,千万不要去百度搜索 python 下载,然后去到类似这样的地方下载:

别在这里下载 python
别在这里下载 python

因为这样做很容易被人骂傻逼的

听说现在骂百度是一种正确的价值观!
听说现在骂百度是一种正确的价值观!

开始玩耍

已经安装好Python之后呢,你可以在命令行里面输入「python」,然后你就会看到这样的东东:

python 版本
python 版本

有没有看到三道杠杠 「 >>>」。是不是突然想到小学的时候,那些受老师爱戴,学生中的好榜样的队长袖口上的三道杠!

三道杠,怕不怕
三道杠,怕不怕
大队长和大队委,牛逼牛逼,社会社会。
大队长和大队委,牛逼牛逼,社会社会。

不过在 Python 这里呢, >>> 是一个提示符来的,也就是在它后面可以输入一些内容,更确切的说,这是交互式Pyhon解释器接收内容的符号

比如我们要 Python 给我们打印 Hello World 的字样,那么你就可以这样子:在 “三道杠” 后面输入 print (“Hello World”) , 然后用力按一下回车键,你就可以看到 Python 解释器打印出 Hello World 这样的字符串了:

Hello World
Hello World

当然仅仅是打印 Hello World 你可能觉得没什么牛逼的,但是这不是才入门么,想要做更多有趣的事情么?跟着我一步一步来!

Pythoner :挑选一个Python编辑器

各位 Pythoner 好啊!在这个烦躁的时代,相聚就是缘分,很高兴各位 Pythoner 能相聚于此,希望接下来的路,我们一起走下去,使用 Python 来做一些有趣的事情,有意义的事情。

我们在玩游戏的时候,我们通过层层努力的打怪升级,为的是什么?是女人么?是金钱么? 当然不是,我们有那么肤浅么?我们为了能够拥有更牛逼的装备。

老话说的好:工欲善其事必先利其器!你的武器越牛逼,你的女人就越能够对你服服帖帖的。
老话说的好:工欲善其事必先利其器!你的武器越牛逼,你的女人就越能够对你服服帖帖的。

所以,我们在使用 Python 来编程的时候,我们也需要一个牛逼的武器,来编写我们的代码 —— 编辑器!

在这里跟大家说一下现在市面上比较主流的 Python 编辑器供你参考,要知道,适合自己的才是好的。如果你的丁丁很小,使用再大 size 的套套也是白搭!

Sublime Text

Sublime Text
Sublime Text

Sublime Text 比较适合 Python 新手使用,Sublime Text支持跨平台,而且可以使用其丰富的插件和主题。各种语法高亮和代码补全,整体看起来挺舒服的,而且主题配置起来也不难。

IDLE

IDLE
IDLE

如果你是 Windows 系统可以使用 IDLE, 它是 Pyhton 自带的一款编辑器,所以刚开始也可以使用它来玩玩,IDLE具备语法高亮功能,还允许你在IDLE中运行你的程序。许多事情它会自动帮你处理。比如debug什么的。

VIM

VIM
VIM

Vim是一款强大的编辑器,如果你熟练使用 Vim 的话,那么你完全可以脱离鼠标,双手在键盘上像弹钢琴那般酸爽,不过 Vim 需要一定的学习成本,需要花点时间去研究一下各种快捷命令和插件的使用,但是从长远来看,这都是大有所益的。

PyCharm

PyCharm
PyCharm

我个人比较中意这个,如果你使用过 IntelliJ IDEA 的话,你应该会对其爱不释手,而这款 PyCharm 也是出自同一家公司,用起来会很顺手,现在很多公司,如Twitter,Groupon,Spotify,eBay和Telefonica等都在用 PyCharm 。不过你使用它的专业版需要花钱购买。

Emacs

Emacs
Emacs

Emacs 在 python 开发界也很受欢迎,它是一款开源的编辑器,支持插件扩展,可以配置一个 python 集成开发环境, Emacs 不仅仅是一个编辑器,他是一个整合环境,可以说是一个集成开发环境。

ok,就推荐这几个市面上比较流行的编辑器,当然还有其他的编辑器,最适合自己的才是最好的,用起来顺手不尴尬才爽嘛~

在这里给点建议就是新手可以先上手使用 IDLE 和 Sublime Text ,Vim是一款强大的编辑器,没事花点时间研究下,相信我,真的会受益匪浅的。

自己写一个 Say Hello 的 python 程序

是不是觉得我特么才安装了 Python 软件,这么快我就可以写出 python 程序了?

先别怀疑着先,一开始我就说了,Python语言简单,上手快,所以你跟着我呢,一步一步来,准没错的。

又他妈的不要脸了!
又他妈的不要脸了!

通过 Pythoner :挑选一个Python编辑器相信你已经知道使用什么样的编辑器了,因为这里力求从0到1,做一个完整 python 的体系,所以现在就先用 IDLE 这个编辑器,到时候你越来越牛逼了,咱们再换编辑器,没毛病。

好了,别废话了,快点带我写程序啊!
好了,别废话了,快点带我写程序啊!

这个Python程序可以干嘛

首先我们来想一下我们这个 Python 程序可以干嘛?

  1. 可以让我们输入名字;
  2. 可以跟我们输入的这个名字say Hello!

ok,我们要达到以上的功能,咱们说干就干!

开始编写第一个python小程序

打开我们的编辑器:

IDLE编辑器
IDLE编辑器

现在的它是处于交互式解释器的状态,如果我们现在在这个交互解释器编写代码,那等下关掉所有的代码就不见了,我们当然是想要能够写出一个自己和别人都能够运行的程序,怎么能说代码丢掉就丢掉呢?

我的小九九都被你发现了,是不是我的pp一抬,你就知道我是要拉尿还是拉shit。
我的小九九都被你发现了,是不是我的pp一抬,你就知道我是要拉尿还是拉shit。

那么我们就使用快捷键「Ctrl + N」来新建一个编辑窗口,可以看到这里没有「三道杠」提示符了吧,我们在这里写的代码待会可以保存,爱在哪里运行就哪里运行。

IDLE编辑器
IDLE编辑器

我们刚刚说了,想要这个程序可以让我们输入名字,那么我们可以用一个叫做 name 的变量来接收别人输入名字,可能你现在不知道变量是什么鬼,但是没关系,你现在把它理解为是一个桶,这个桶可以来存放用户输入的名字就好了,往后我会告诉你变量的使用,别急,咱们慢慢来。

ok,那么我们就可以写我们的第一行代码了:

1
name = input ("你他妈叫什么玩意儿?")

解释一下这行代码的意思,input 是输入的意思,而「你他妈叫什么玩意儿?」就是显示给用户看的提示语。

我们已经完成了第一点,也就是这个程序可以让我们输入名字,那么我们继续完成第二点,可以跟我们输入的这个名字say Hello!

那么很简单,我们只要再写一行代码即可:

1
print("Hello" + name)

解释一下这行代码的意思, print 就是打印的意思,你可以理解为信息的输出,我们已经知道 name 这个 “桶” 已经装了用户输入的名字,所以 “Hello” + name 就是会输出 Hello xxx!

IDLE编辑器
IDLE编辑器

ok,我们已经写完代码了,我们「Ctrl + S」保存一下文件到桌面,你可以把它命名为「Hello.py」。

接着我们就可以来运行我们的程序了,在我们的 IDLE 中用力的按一下 F5 开始运行程序:

IDLE编辑器
IDLE编辑器
可以可以~
可以可以~

看到木有,我们的程序完成了。是不是挺好玩的!慢慢来,我们到时就可以写游戏,写网站,写爬虫了,是不是想想还有点小激动呢?

什么是常量,什么是变量?

这两个概念很简单理解,以后我们在使用 Python 编程的时候也会经常用到。

常量

我们知道,世界杯踢球每队会派出 11 名队员出场比赛,这里的 11 是固定不变的。我们高中的时候学的物理有个叫做重力加速度的概念,它是 9.8 m/s²,这里的 9.8 也是一样是固定不变的,对于这些固定不变的,具备字面上的意义的量我们就称为「常量」,它就像一座高高的大山,不会被轻而易举的改变,愚公移山?不存在的。

愚公移山
愚公移山
愚公不畏艰难,坚持不懈,挖山不止,最终感动天帝而将山挪走的故事。通过愚公的坚持不懈与智叟的胆小怯懦,以及“愚”与“智”的对比告诉人们,无论遇到什么困难,只要有恒心、有毅力地做下去,就有可能成功。
愚公不畏艰难,坚持不懈,挖山不止,最终感动天帝而将山挪走的故事。通过愚公的坚持不懈与智叟的胆小怯懦,以及“愚”与“智”的对比告诉人们,无论遇到什么困难,只要有恒心、有毅力地做下去,就有可能成功。
这特么跟常量有毛关系?
这特么跟常量有毛关系?

变量

自己动手写一个会跟你 Say Hello 的 python 程序中我们就谈到了变量这个玩意,我说变量可以把它理解为一个「桶」,你可以通过它来存储一些变化的值。

其实说白了变量只是你的计算机中存储信息的一部分内存,它可以存储所有可以变化的值。

比如说你想要用「 i 」 来表示一个变量,对python来说是一件很简单的事,你只要用 「i = 变化的值」就可以了。

举个例子:

python 变量
python 变量

这里使用 i 来表示一个变化的值 5,也就是说我们将 5 赋值给变量 i 。那么现在这个 i 指向的值就是 5 。

所以这里的 i+6 就是 5+6。

假如我们现在想让 i 来表示的值变成 2,这完全没问题,只要这样即可:

python 变量
python 变量
男人能屈能伸,可长可短,算不算变量?
男人能屈能伸,可长可短,算不算变量?

注意了,Python中的变量名称只能由字母、数字、下划线构成,而且不可以数字打头,像「xiaoshuaib_520」这样的是合法的,但是如果是「520_xiaoshuaib」那是不可以的。

不信你瞧:

python 变量
python 变量

Python基本数据类型之「数」

相信通过什么是常量,什么是变量?你已经知道了变量是个什么玩意了,变量可以来处理变化的值,而这些变化的值呢,是可以对其分门别类的,也就是说每个变化的值它是有专属的类型的,你可以理解为这个值打一个标签。

在这里补充一点:Python 中的变量是不需要声明。每个变量在使用前都必须赋值,变量赋值以后这个变量才会被创建。

比如说 i = 5 ,在这里并不需要去定义这个 i 的类型,例如「整数类型 i = 5」,我们只要直接把 5 赋值给 i 就可以了,赋值后这个变量 i 就被创建了。这时候我们就可以说变量 i 现在所指的是一个为「整数类型的值5」。

Python除了基本数据类型「数」之外,还别的基本类型例如字符串,我们也可以自己定义数据类型,这个往后讲。
Python除了基本数据类型「数」之外,还别的基本类型例如字符串,我们也可以自己定义数据类型,这个往后讲。

接下来就来说说 Python 中基础数据类型中的「数」。

在 Python 中的数有四种,分别是整数(int)、长整数(long)、浮点数(float)、复数(complex)。

整数

像 6 这样的数字就是整数,不带小数点的,而长整数只不过代表的是比较大一点的整数,现在 python3 中的整数(int)已经不限制数的大小限制了,所以整数类型也包括长整数。

我们可以通过 Python 交互式解释器来运算整数:

python运算整数
python运算整数

这里的 「6+6」没什么好说的吧,而 「6//2」就是6整除2的意思了,「1%2」的意思是说1除以2的余数,「%」有个专业名词叫做取余或者取模。而「2**3」就是2的三次方的意思。

怎么样?简单吧!

浮点数

但是如果你试试 「1/2」,这时候你会发现结果有小数点:

python运算浮点数
python运算浮点数

在这里的 「/」是除的意思,但是不会整除,你可以看到每次的结果都会有小数点。而这些像 「0.5」,「1.0」带有小数点的数我们就叫做浮点数。

复数

Python中的复数由实数部分和虚数部分组成。虚部的后缀为「j」。

例如:4+5j 就是一个复数,实数部分为 4.0,虚数部分为 5.0。

你可以把复数理解成为一个平面的一个点,例如上面这个例子你可以把它理解为平面上的点(4,5)。

Python连复数都支持,你说它能不强大么?

二进制八进制十六进制的快速转化

二进制

我们都知道,在计算机中,存储的数据都是像这样「010101010110010101…」的东东,这一串数字就是二进制。

想想你家里的灯,是不是只有两种状态,一种是开灯,一种是关灯。

开关灯
开关灯

而我们的计算机在表示数据的时候也是按照这样的状态来表示的。也就是一开一关两个状态。

我们把 0 当做关,把 1 当做开!

0有点像把锁,1有点像把钥匙!emmmm..
0有点像把锁,1有点像把钥匙!emmmm..

但是现在想想啊,我们那么多数据,比如说一个 mp3 音乐,一部苍老师的教程视频,如果只让计算机仅仅以 0 和 1 这两种状态来表达这些数据,那是心有余而力不足的。

那么怎么办呢?这时候国际标准化组织就决定了,不够用是吧,那么用 8 个这样的状态来表达一个数据!

也就是:

一个数据 = 01010101 (8个状态)

那么这样的由8个状态组成的数据就叫做字节

不信的话你可以随便点开的桌面的文件,右键打开属性看看,是不是都会给你显示这个文件的大小都会用字节来表示:

文件的大小
文件的大小
你这小黄图能否图片分享一下?
你这小黄图能否图片分享一下?

所以知道以下的东东代表的是什么了吧:

1byte(字节)= 8bit(位,状态)

1kb = 1024byte
1mb = 1024kb
1g = 1024mb
1tb = 1024g

二进制怎么转化成八进制?

我们已经知道了一个字节需要8个二进制位来表示,有点长了,那么用八进制来表示的话就会短一点,比如说有怎么一个字节:

0101101

如果我们想把它变成 八进制 的话,那就从右到左,每三位当做一个,最左边的不够就补0。也就是说上面这个可以这样:

000101101

把每三位的整体转化成十进制的数,就变成八进制了。至于怎么转换,下面会说到。这时候用八进制就只用3个数就可以表示了。

二进制怎么转化成十六进制?

同理,十六进制可以用更少的位数来表示,如果我们想把0101101变成 十六进制 的话,那就从右到左,每四位当做一个,最左边的不够就补0。也就是说上面这个可以这样:

00101101

把每四位的整体转化成十进制的数,就变成十六进制了。至于这么转换,下面也会说到。这时候用十六进制就只用2个数就可以表示了。

不同的进制表达方式

二进制是由 「0,1」 组成,通常以 0b 开头。

八进制是由 「0,1,2,3,4,5,6,7」 组成,以 0 开头。

十进制是由 「0,1,2,3,4,5,6,7,8,9,0」 组成。

十六进制是由 「0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f」 组成,以0x开头的。

进制之间的相互转化

在这里告诉大家一个进制之间快速转化的方法,当然,不是使用计算器啊 - -

首先你只要记住以下对应关系即可:

1
2
3
1    1    1    1    1    1    1    1

128 64 32 16 8 4 2 1

二进制转化为十进制

那么如果告诉你一个二进制 如 0b11111111,转化成十进制,怎么做呢?把对应的数加起来就可以了。

0b11111111 = 128+64+32+16+8+4+2+1 = 255

看到 255 有没有一种熟悉的感觉?

所以这时候再给你出道题,把 0b010110 转化成十进制你应该会了吧?

0b010110 = 16 + 4 + 2 = 22

十进制转化为二进制

同样的:

1
2
3
1    1    1    1    1    1    1    1

128 64 32 16 8 4 2 1

我们要把十进制如22,转为二进制就是:

22之内16有没有? 那么在16对应的地方就有1。

22-16=6,那么8对应的就不存在了。

6之内有4对吧,那么4对应的就有1,6-4=2,那么2也有,2-2=0,所以1就没了。

所以最后的答案就是 22 = 0b10110。

二进制转化为八进制

我们已经知道了在二进制中每三位的十进制代表一个八进制位:

000101101

那么这时候只要把这个二进制拆成三份,每一份转化成十进制,再组合起来就是八进制了。

000 = 0;

101 = 4+1 = 5;

101 = 4+1 = 5;

所以二进制 0b000101101 = 八进制0055。

二进制转化为十六进制

我们已经知道了在二进制中每四位的十进制代表一个十六进制位:

00101101

那么这时候只要把这个二进制拆成两份,每一份转化成十进制,再组合起来就是十六进制了。

0010 = 2;

1101 = 8+4+1 = D;

所以二进制 0b00101101 = 十六进制0x2D。

ok,以上,其实说实话,如果不懂这个也不影响后面使用 Python 来编程,但是懂的多一些总归没有什么坏处。

各种符号的意义及用法

我们小时候,老师都教过我们 1+1=2 ,这个 「1+1」 就是表达式, 「+」 就是运算符。

咱们接下来就来了解一下,在 python 中,那些运算符是什么意思,怎么用? 相信看完,你就能够明白了。

加减乘除(+-/*)

对于 +-*/ 我们都知道它们是什么含义了吧,就算你的数学是体育老师教的,你也会懂加减乘除吧。

不过有两个小细节值得你去注意,就是字符串之间的相加和相乘:

python运算浮点数

看懂是啥意思了么?

字符串之间的相加会被”拼接”起来,而字符串和数字相乘就会重复多次相同的字符串。

其它的大于、小于、大于等于、小于等于就不说了,因为我们小学老师都跟我们说过了。接下来说几个比较少见的符号。

幂(**)

幂就是以前我们学数学的时候老师讲的什么什么几次方,别一看到幂就想到杨幂。

杨幂
杨幂

用符号 ** 表示, 比如 2**3 = 8

整除(//)

我们知道 / 是除的意思,你知道 6/3 等于多少么?你可能会觉得在侮辱你的智商对不对,不是 2 么? 在 python 中得出的结果是 2.0 , 也就是它返回的是浮点数。 那么我们只想得到整数部分怎么玩呢?

用 // 这个 : 6//3 = 2。

取模(%)

取模的意思不是让你去获取个模特,是得到除法的余数,比如 8%5 = 3 ,因为 8/5 = 1余3。

左移(<<)和右移(>>)

移的意思就是把一个数的二进制移动多少个位。

比如 2 << 2 = 8 。这是为什么呢?

首先 2 的 二进制 是 0b00000010 ,然后将它左移2位(虚位补0)就变成这样: 0b00001000 ,它对应的十进制就是 8 。

同样的道理:

8 >> 2 的意思就是将 8 的二进制向右移动2位:

0b00001000 右移动2位:0b00000010 也就是对应十进制的 2。

那么下次有人问你2*8怎么样写代码比较高效,你就直接甩给它: 2<<3 就好了。

与(&)

记住一句话:”同真与真”,什么意思呢? 比如 1&1=1,1&0=0,

1就是真,0就是假。也就是只有 1&1=1,其它的都等于0。

那么 2 & 3 怎么算?

先将它们转化为二进制:

2对应的二进制 : 0b00000010

3对应的二进制 : 0b00000011

那么从右往左: 0&1=0 ,1&1=1,0&0=0,所以结果为

0b00000010,转化为十进制就是2,所以 2&3=2。

或(|)

记住一句话:”同假或假”,什么意思呢? 比如 1|1=1,0|0=0,

1就是真,0就是假。也就是只有 0|0=0,其它的都等于1。

那么 2 | 3 怎么算?

先将它们转化为二进制:

2对应的二进制 : 0b00000010

3对应的二进制 : 0b00000011

那么从右往左: 0|1=1 ,1&1=1,0&0=0,所以结果为

0b00000011,转化为十进制就是3,所以 2|3=3。

异或(^)

相同者假,不同者真,什么意思呢?就是 1^1=0, 1^0=1。

那么 2^3 怎么算?

先将它们转化为二进制:

2对应的二进制 : 0b00000010

3对应的二进制 : 0b00000011

那么从右往左: 0^1=1 ,1^1=0,0&0=0,所以结果为

0b00000001,转化为十进制就是1,所以 2^3=1。

翻转(~)

x的按位翻转就是是-(x+1)。

那么 ~2 怎么算?

~2 = -(2+1) ; 所以答案就是-3。

ok,以上,其实没必要去记住,了解一下就这些符号是什么意思,怎么算的就好了。

持续更新中,敬请期待!

参考文章