02Python学习笔记之二.二【进制、原反补码、位运算】2019-08-17

章节号 内容            
1图片格式(png) 宽度大于620px,保持高宽比减低为620px
1-1 应用
1-1-1 方法

第1章节  进制

  16进制、10进制、8进制、2进制
  计算机只能识别10,最早以此为2进制。但是人难以读0和1,所以需要在人类认识的字符和0与1之间做转换。从而引出16进制、10进制、8进制等进制和字符编码(把人识读的字符转换成0和1组成的数字串)等。
  16进制:1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(15),10(16)

第2章节  原码、反码、补码

  首先我们考虑字符,包括汉字、数字、英文字符、各种语言等等,每一个单个的字符,要先规定到底用几个0或者1来表示,一个0或者一个1设定为一个bit,即一个位;八个0或者1就是8个bit,一个Byte,即一个字节。



  ↑为了表示正负数,把最左边一位定为符号位,0为正,1为负。考虑1加上-1的情况是什么。

0000 0000 0000 0001
#加上
1000 0000 0000 0001

  ↑单纯考虑二进制的情况,发现二进制的1加上-1等于如下:

1000 0000 0000 0010

  ↑字面值等于-2。这明显和实际结果相悖。

  由此引入:反码,补码


  规则:正数:原=反=补

  规则:负数:反=符号位不变,其他位取反
  规则:负数:补=反码+1


#-1原码
1000 0000 0000 0001
#-1反码
1111 1111 1111 1110
#-1补码
1111 1111 1111 1111

  正负数相加改为(两个数的补码相加):

#-1补码
1111 1111 1111 1111
#1补码
0000 0000 0000 0001
#注意这是一个补码的结果,还要再转换回原码才行
0000 0000 0000 0000

  ↑结果其实是有一个进位的,但是这里看这16位就等于0。

  负数的补码转换回原码:

  符号位不变,取反,加1(和原码变补码过程相同)

#-1补码
1111 1111 1111 1111
#-1原码计算过程
1000 0000 0000 0000
+
0000 0000 0000 0001
=
1000 0000 0000 0001

  ↑正好等于-1

第3章节  进制转换

In [92]: bin(18)
Out[92]: '0b10010'

In [93]: bin(-18)
Out[93]: '-0b10010'

  ↑0b表示是二进制

In [94]: hex(18)
Out[94]: '0x12'

In [95]: hex(-18)
Out[95]: '-0x12'

  ↑0x表示是十六进制

In [97]: oct(18)
Out[97]: '022'

In [98]: oct(-18)
Out[98]: '-022'

  ↑python2的八进制

In [1]: oct(18)
Out[1]: '0o22'

In [2]: oct(-18)
Out[2]: '-0o22'

  ↑python3的八进制

In [3]: int(-0o22)
Out[3]: -18

In [4]: int(-0x12)
Out[4]: -18

In [5]: int(-0b10010)
Out[5]: -18

In [6]: int("0x12",16)
Out[6]: 18

第4章节  位运算

#5
0000 0000 0000 0101
#左移一位,得10
0000 0000 0000 1010
#再左移一位,得20
0000 0000 0001 0100

  ↑结论:左移一位,等于乘以2。快速完成这种乘法,可以用位运算进行
  ↑结论:右移一位,等于除以2。快速完成这种除法,可以用位运算进行


  运算符:
  1、& 按位与
  2、| 按位或
  3、^ 按位异或

#如果a、b两个位不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
In [24]: 0b1100^0b0001
Out[24]: 13

  4、~ 按位取反

In [19]: ~2
Out[19]: -3

  5、<< 按位左移
  6、>> 按位右移

In [12]: 5<<1
Out[12]: 10

In [13]: 8>>2
Out[13]: 2

  取反运算的特殊性(原因是:在计算机系统中,数值都是以补码来表示和存储的)

In [31]: bin(~9)
Out[31]: '-0b1010'

In [32]: bin(~0b1001)
Out[32]: '-0b1010'

  首先,9是正数,原反补相同。

0000 1001
取反
1111 0110
这就是9的补码的取反

接下来,要转换成我们认识的数字。python中数都是分正负的,所以的一位符号位固定保留的,
这里系统会判定为这是个负数,所以第一位不变。
`符号位不变,其他位取反,再加一,变会原码`
10001001
加1
10001010

  ↑最后结果为:-10
  ↓下面再类推一个-9的取反等于几?

In [33]: ~-9
Out[33]: 8

In [34]: bin(~(-0b1001))
Out[34]: '0b1000'

In [35]: ~(-0b1001)
Out[35]: 8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容