01-02二进制、补码与位运算

一:进制

在计算机编程中,整数可以通过二进制,八进制,十进制,十六进制

十进制可通过方程转二、八、十六进制。倒转需要先转成二进制再转。
二进制可通过方程转十、八、十六进制。

1.十进制

基数:0,1,2,3,4,5,6,7,8,9
进位:逢十进1.
位权:123(10) = 1 *10^2 + 2 *10^1 + 3 *10^0

2.二进制

基数:0,1
进位:逢二进一
100(2)==4(10) 二进制的100 == 十进制的4
位权:101(2) = 1 *2^0 + 0 *2^1 + 1 *2^2 # ^次方符号。
十进制转二控制,可用位权方程。N是2的几次方最大值,剩下的数再2的几次方,是2的几次方就是第几位数上记1,无的记0.

3.八进制

基数:0,1,2,3,4,5,6,7
进位:逢八进一
位权:123(8)= 3 *8^0 + 2 *8^1 + 1 *8^2

`123(10)转八进制 ,8**2 =64 ,
123 - 64 = 63 ,  7 * 8**1 =56 
63 - 56 = 3  ,   3 * 8**0 =3
结果即123十进制转八进制等于 173`
4:十六进制

基数:0,1,2,3,4,5,6,7,8,9, a/A(10) ,b,c,d,e,f,(也可以大写)
进位:逢16进一
位权:123(16) = 3 *16^0 + 2 *16^1+ 1 *16^2

1.程序中怎么表示不同进制的数

a.在程序中直接写的数字都是十进制。控制台打印出来的数字都是十进制的。 0后面的字母也可以是大写的

b.二进制

0b/B + 二进制数

num = 0b01001110
print(num)   #控制台打印出来会显示十进制数。
print(bin(78)) #获取一个数对应的二进制数,控制台打印出来是字符串。
print(bin(0x123af))  #把十六进制转二进制
print(bin(0o123))    #把八进制转二进制

八进制转二进制,每一位八进制数转成三个二进制数。(8是2的3次方)
十六进制转二进制,每一位十六进制转成四个二进制数。(16是2的4次方)

c.八进制

0o/o + 八进制数

num = 0o1345
print(oct(800))  #把十进制转成八进制

d.十六进制

0x/X + 十六进制

num = 0x23af
print(hex(12357)) #转成16进制
print(ord('一'))
print('aaa\uffffl')
print(hex(0o123))

二:原码、反码、补码

计算机只能存二进制的补码。

计算机存数据只能存数字数据,而且只能存数据的二进制的补码。
计算机对数据进行的运算的时候是使用补码进行运算的,将数据从计算机中读出来看到的是原码。

1.原码:

符号位 + 真值
说明:
符号位:最高位用0表示正数,用1表示负数。
真值:去掉正负符号后,数字的二进制值。

100的原码:01100100(第一位0代表正数)
-100的原码:11100100(第一位1代表负数)

2.反码:

正数的反码:就是原码
负数的反码:原码的符号位不变,其他位数取反。(取反0变成1,1变成0)

100的反码:01100100(第一位0代表正数)
-100的反码:10011011(第一位1代表负数)

3.补码:

正数的补码:就是原码
负数的补码:反码加1.

100的补码:01100100
-100的补码:10011100
print(bin(-50)) 原码 1110010 ---- 反码 1001101 ---- 补码 1001110

4.为什么计算机要存补码?

因为计算机中只有加法器,没有减法器。
3-2 --->3 + (-2)
3的原码:011 -2的原码:110 3-2 = 011 + 110 = 001
2-3---> 2+(-3) = 110 + 011 = 001 = 1 #用原码计算,有负数时则出错。
-3原码:1011 反:1100 补:1101
-2原码:1010 反:1101 补:1110

三:位运算(二进制计算)

位运算:&(按位与(数字7)),|(按位或运算),~(按位取反),^(按位异或),>>(右移),<<(左移)

数字1 & 数字2-->两位上的数都为1结果就是1,有0结果就是0.

0111(补) & 1101(补) --> 0101(补)
1.特点:一个位上的数如果和1与,可以保留这个位上的数; 和0与可以置0
2.应用:判断一个数的奇偶 (如果一个数的二进制最低位是1是奇数,否则就是偶数)

num & 1 == 0 #(偶数)    (一个数&1,结果是二进制的最后一位。)
num & 1 == 1 #(奇数)
print(3 & 1)
print(100 & 1)

数字1 | 数字2: 只要有1结果就是1,两个都为0结果才是0

特点:和1或,置1.

print(3|2) #0011 | 0010 = 0011(补)

~ 数字 : 将数字上的每一位取反。

~ 1 = 0 ,,,~0 = 1

print(~3)   # ~0011 = 1100(补) =1011(反) = 1100
print(~-4)
~~3 = 3  #取反两次等于他本身。

数字1 ^ 数字2 :两个数相同为0,不同为1.

应用:加密。快速判断两个数是否相等:相同的两个数异或结果是0

print(3^2)   # 0011^0010 = 0001 = 1
print(1^2)   #1^2 = 3

数字1 << N : 数字1左移N位,数字1 * 2**N

数字1 >> N : 数字1右移N位。数字1 // 2**N

应用:快速乘2的次方/除2的次方。

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

推荐阅读更多精彩内容