原碼:原碼是二進(jìn)制數(shù)字的一種簡(jiǎn)單的表示法。二進(jìn)制首位為符號(hào)位,1代表負(fù),0代表正。
公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)推出東河免費(fèi)做網(wǎng)站回饋大家。
反碼:反碼可由原碼得到。如果是正數(shù),反碼與原碼相同;如果是負(fù)數(shù),反碼是其原碼(符號(hào)位除外)各位取反而得到的。
補(bǔ)碼:補(bǔ)碼可由原碼得到。如果是正數(shù),補(bǔ)碼與原碼相同;如果是負(fù)數(shù),補(bǔ)碼是對(duì)其原碼(除符號(hào)位外)各位取反,并在末位加1而得到的(有進(jìn)位則進(jìn)位,但不改變符號(hào)位)。
python有按位取反的操作符:~ ? 但是對(duì)負(fù)整數(shù)要小心操作,因?yàn)樵谟?jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)表示和存儲(chǔ)的。
python支持:數(shù)學(xué)運(yùn)算符、邏輯運(yùn)算符、比較運(yùn)算符、賦值運(yùn)算符、(位運(yùn)算符)
其中:+、-、*、/,與數(shù)學(xué)中的加減乘除一樣
整除(//),兩數(shù)相除結(jié)果只取整數(shù)部分
取余(%),兩數(shù)相除取余數(shù)
冪運(yùn)算(**),x ** y 即為(求x的y次方)
可用于開(kāi)方。如下:
注意:運(yùn)算符的運(yùn)算不一定非得是數(shù)據(jù),也可是存數(shù)據(jù)的變量
所有比較運(yùn)算符的值都是布爾值(False/True)
補(bǔ)充:is的使用
一個(gè)變量有三要素,分別是:類(lèi)型(變量中存儲(chǔ)的數(shù)據(jù)的類(lèi)型)、值(變量中存儲(chǔ)的數(shù)據(jù))、
地址(變量存儲(chǔ)的真正內(nèi)容,數(shù)據(jù)的地址)
(==)和is的區(qū)別: *
注意:變量中若是存儲(chǔ)的數(shù)據(jù)為數(shù)字和字符串,則地址相同
(變量中存儲(chǔ)的數(shù)據(jù)為數(shù)字和字符串)示例:
與比較運(yùn)算符的運(yùn)算對(duì)象和值都是一樣的,值都為布爾值
應(yīng)用:要求同時(shí)滿(mǎn)足多個(gè)條件的時(shí)候就用邏輯與運(yùn)算
練習(xí):能否獲得獎(jiǎng)學(xué)金條件,成績(jī)90分以上以及測(cè)評(píng)分不能低于95
False or False -- False
運(yùn)算技巧:只要存在True,則結(jié)果為T(mén)rue
應(yīng)用:要求多個(gè)條件只要有一個(gè)條件滿(mǎn)足就使用邏輯或運(yùn)算
練習(xí):是否降班條件,考試分?jǐn)?shù)低于60,或者不在教室
not False = True
not True = False
是否漂亮,評(píng)分大于5則為漂亮
所有的賦值運(yùn)算符,要求運(yùn)算符的左邊必須是變量;右邊是有結(jié)果的(值)
其他賦值運(yùn)算符中除(=)外,運(yùn)算方法與以上一致
數(shù)學(xué)運(yùn)算符 比較運(yùn)算符 邏輯運(yùn)算符 賦值運(yùn)算符
優(yōu)先級(jí)高的先算,優(yōu)先級(jí)低的后算。如果有(),先算()里面的
數(shù)學(xué)運(yùn)算符中的優(yōu)先級(jí):** *,/,%,// +,-
1.int:包含所有的整數(shù),支持十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制
2.float:包含所有的小數(shù),支持科學(xué)計(jì)數(shù)法
3.布爾(bool)類(lèi)型:值只有True和False,數(shù)學(xué)運(yùn)算中 True == 1 ,F(xiàn)alse == 0
4.復(fù)數(shù)(complex)型:實(shí)部 + 虛部(通常用j來(lái)表示虛部,j前面的數(shù)字不能省略)
1,認(rèn)識(shí)字符串:
通過(guò)單引號(hào)或者雙引號(hào)括起來(lái)的字符集(文本)就是字符串
什么是字符 :python中只有字符的概念,沒(méi)有字符的類(lèi)型,如果要表示一個(gè)字符,用一個(gè)長(zhǎng)度是1的'字符串'來(lái)表示
字符串是不可變的,但是有序--》(長(zhǎng)度不可變,字符內(nèi)容不可變,有序指的是每個(gè)字符在字符串中的位置是不變的)
2.字符串類(lèi)型(str):str是python自己提供的一種容器型數(shù)據(jù)類(lèi)型
容器型數(shù)據(jù)類(lèi)型的特點(diǎn):一個(gè)字符串中可以存儲(chǔ)多個(gè)字符
3.字符串中的字符
注意: 1.沒(méi)有阻止轉(zhuǎn)義時(shí),一個(gè)轉(zhuǎn)義字符的長(zhǎng)度是1
2.可以在字符串的最前面加r/R來(lái)阻止轉(zhuǎn)義(阻止字符串中的所有轉(zhuǎn)義字符轉(zhuǎn)義)
如下:
例如:
4.字符編碼:字符的編碼就是為了把字符存到計(jì)算機(jī)里面,給每個(gè)字符一個(gè)固定的編號(hào)(數(shù)字組成)
計(jì)算機(jī)在存儲(chǔ)數(shù)據(jù)的時(shí)候只能存數(shù)字?jǐn)?shù)據(jù),而且存的是數(shù)字的二進(jìn)制的補(bǔ)碼
數(shù)字存儲(chǔ):列如 10— 轉(zhuǎn)換成二進(jìn)制 - 求補(bǔ)碼(存儲(chǔ))
目前采用的兩種編碼方式:ASCII碼表(128個(gè)字符)和Unicode編碼表(相當(dāng)于ASCII碼表的擴(kuò)充,
采用兩個(gè)字節(jié)對(duì)字符進(jìn)行編碼,包含世界上所有的語(yǔ)言和符號(hào),又稱(chēng)萬(wàn)國(guó)碼)。python采用的是Unicode編碼表
小寫(xiě)字母的編碼范圍(a-z):97 - 122
大寫(xiě)字母的編碼范圍(A-Z):65 - 90
中文編碼范圍:0x4e00 - 0x9fa5
函數(shù)應(yīng)用:
首先你可以自己寫(xiě)函數(shù)采用%2的方式來(lái)算.
但是python自帶了方法 bin.
比如bin(12345)回返回字符串'0b11000000111001' 這個(gè)時(shí)候在把0b去掉即可.
bin(number).replace('0b','')
更詳細(xì)的介紹可參考 這篇文章
如下以8位二進(jìn)制為例:
特殊地?cái)?shù)字在計(jì)算機(jī)中用二進(jìn)制補(bǔ)碼形式表示,補(bǔ)碼10000000表示的不是 -0,而是-128
一般來(lái)講,整形數(shù)在內(nèi)存中是以 補(bǔ)碼 的形式存放的,輸出的時(shí)候同樣也是按照 補(bǔ)碼 輸出的。
但是在 Python 中,情況是這樣的:
所以為了獲得十進(jìn)制負(fù)數(shù)的補(bǔ)碼,我們需要手動(dòng)將其和 0xffffffff 進(jìn)行與操作,得到一個(gè)十六進(jìn)制數(shù),再交給 bin() 轉(zhuǎn)化,這時(shí)內(nèi)存中得到的才是你想要的補(bǔ)碼。
計(jì)算機(jī)中的正負(fù)數(shù),其本身就是補(bǔ)碼。
求補(bǔ)碼,不需要你編程。
在你輸入正負(fù)數(shù)時(shí),鍵盤(pán),以及操作系統(tǒng),就已經(jīng)
把正負(fù)數(shù)變換成補(bǔ)碼,送到計(jì)算機(jī)內(nèi)部存放起來(lái)了。
你不必多費(fèi)這個(gè)心思。
python中的進(jìn)制轉(zhuǎn)換和原碼,反碼,補(bǔ)碼
計(jì)算機(jī)文件大小單位
b = bit 位(比特)
B = Byte 字節(jié)
1Byte = 8 bit #一個(gè)字節(jié)等于8位 可以簡(jiǎn)寫(xiě)成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
進(jìn)制分類(lèi)
二進(jìn)制:由2個(gè)數(shù)字組成,有0 和 1 python中標(biāo)志:0b
八進(jìn)制:由8個(gè)數(shù)字組成,有0,1,2,3,4,5,6,7 python中標(biāo)志:0o
十進(jìn)制:有10個(gè)數(shù)字組成,有0,1,2,3,4,5,6,7,8,9 python中標(biāo)志:無(wú)
十六進(jìn)制:有16個(gè)數(shù)字組成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(進(jìn)制字母大小寫(xiě)都可以,分別代表10,11,12,13,14,15) python中標(biāo)志:0x
python中的進(jìn)制轉(zhuǎn)換:
其他進(jìn)制轉(zhuǎn)換為十進(jìn)制:int(相應(yīng)進(jìn)制)
其他進(jìn)制轉(zhuǎn)換為二進(jìn)制:bin(相應(yīng)進(jìn)制)
其他進(jìn)制轉(zhuǎn)換為八進(jìn)制:oct(相應(yīng)進(jìn)制)
其他進(jìn)制轉(zhuǎn)換為十六進(jìn)制:hex(相應(yīng)進(jìn)制)
二進(jìn)制 轉(zhuǎn)化成 十進(jìn)制:
例: 0b10100101
運(yùn)算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
八進(jìn)制 轉(zhuǎn)化成 十進(jìn)制:
例: 0o127
運(yùn)算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
十六進(jìn)制 轉(zhuǎn)化成 十進(jìn)制:
例: 0xff
運(yùn)算:15*16^0 + 15*16^1 = 255
十進(jìn)制 轉(zhuǎn)化成 二進(jìn)制:
426 = 0b110101010
運(yùn)算過(guò)程: 用426除以2,得出的結(jié)果再去不停地除以2,
直到除完最后的結(jié)果小于2停止,
在把每個(gè)階段求得的余數(shù)從下到上依次拼接完畢即可
十進(jìn)制 轉(zhuǎn)化成 八進(jìn)制:? ?
426 = 0o652
運(yùn)算過(guò)程: 用426除以8,得出的結(jié)果再去不停地除以8,
直到除完最后的結(jié)果小于8停止,
在把每個(gè)階段求得的余數(shù)從下到上依次拼接完畢即可
十進(jìn)制 轉(zhuǎn)化成 十六進(jìn)制:? ?
運(yùn)算過(guò)程: 用426除以16,得出的結(jié)果再去不停地除以16,
直到除完最后的結(jié)果小于16停止,
在把每個(gè)階段求得的余數(shù)從下到上依次拼接完畢即可。
相關(guān)推薦:《Python視頻教程》
原碼,反碼,補(bǔ)碼
實(shí)際人們看到的數(shù)字是原碼轉(zhuǎn)化之后顯示出來(lái)的。
而原碼是通過(guò)補(bǔ)碼得到的。
計(jì)算機(jī)的所有數(shù)據(jù)在底層都是以二進(jìn)制的補(bǔ)碼形式存儲(chǔ)。
***進(jìn)制轉(zhuǎn)換的時(shí)候需要先把內(nèi)存存儲(chǔ)的補(bǔ)碼拿出來(lái)變成原碼在進(jìn)行轉(zhuǎn)換輸出***
反碼:二進(jìn)制碼0變1,1變0叫做反碼,反碼用于原碼補(bǔ)碼之間的轉(zhuǎn)換。
補(bǔ)碼:用來(lái)做數(shù)據(jù)的存儲(chǔ)運(yùn)算,可以實(shí)現(xiàn)計(jì)算機(jī)底層的減法操作,因而提出(可以表達(dá)出一個(gè)數(shù)的正負(fù))。
也就是說(shuō)默認(rèn)計(jì)算機(jī)只會(huì)做加法,例:5+(-3) = 5 - 3。
乘法除法是通過(guò)左移和右移 來(lái)實(shí)現(xiàn)。
正數(shù)高位補(bǔ)0,負(fù)數(shù)高位補(bǔ)1。
正數(shù):
原碼 = 反碼 = 補(bǔ)碼
負(fù)數(shù):
反碼 = 原碼取反(除高位)
補(bǔ)碼 = 反碼加1
反碼 = 補(bǔ)碼減1
原碼 = 反碼取反(除高位)
我們會(huì)發(fā)現(xiàn),在取反前減1和在取反后加1的效果是一樣的,這就和-2-1 = -(2+1)一個(gè)道理,所以會(huì)得出這樣的規(guī)律:
原碼 = 補(bǔ)碼取反加1
補(bǔ)碼 = 原碼取反加1
一個(gè)數(shù)在計(jì)算機(jī)中的二進(jìn)制表示形式, 叫做這個(gè)數(shù)的機(jī)器數(shù)。機(jī)器數(shù)是帶符號(hào)的,在計(jì)算機(jī)用一個(gè)數(shù)的最高位存放符號(hào), 叫符號(hào)位正數(shù)為0, 負(fù)數(shù)為1。
比如
正數(shù)1在計(jì)算機(jī)中的存儲(chǔ)即為
0 00000000000000000000001
負(fù)數(shù)1 在計(jì)算機(jī)中的存儲(chǔ)即為
1 00000000000000000000001
一個(gè)正數(shù),轉(zhuǎn)換為二進(jìn)制位就是這個(gè)正數(shù)的原碼。負(fù)數(shù)的絕對(duì)值轉(zhuǎn)換成二進(jìn)制位然后在高位補(bǔ)1就是這個(gè)負(fù)數(shù)的原碼。
正數(shù)的反碼就是原碼,負(fù)數(shù)的反碼等于原碼除符號(hào)位以外所有的位取反。
正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼為 其原碼除符號(hào)位外所有位取反(得到反碼了),然后最低位加1。
所以原碼,反碼,補(bǔ)碼正數(shù)情況下是一致的,負(fù)數(shù)情況下是不一致的。
計(jì)算機(jī)的運(yùn)算過(guò)程實(shí)際就是補(bǔ)碼相加的一個(gè)過(guò)程。
比如-2 + 3
-2 的原碼為
1 000000000000000000000000010
反碼為:
1 111111111111111111111111101
補(bǔ)碼為:
1 111111111111111111111111110
3的原碼為
0 000000000000000000000000011
反碼為:
0 000000000000000000000000011
補(bǔ)碼為:
0 000000000000000000000000011
那么二者補(bǔ)碼相加結(jié)果為
1 111111111111111111111111110
+
0 000000000000000000000000011
=
10 000000000000000000000000001(計(jì)算機(jī)存儲(chǔ)為32位,故前面溢出的1被舍棄,高位為0)
0 000000000000000000000000001
結(jié)果為1
再比如-2 + 1
-2 的原碼為
1 000000000000000000000000010
反碼為:
1 111111111111111111111111101
補(bǔ)碼為:
1 111111111111111111111111110
1的原碼為
0 000000000000000000000000001
1的反碼為:
0 000000000000000000000000001
1的補(bǔ)碼為:
0 000000000000000000000000001
二者的補(bǔ)碼相加結(jié)果為
1 111111111111111111111111110
+
0 000000000000000000000000001
=
1 111111111111111111111111111
得出的補(bǔ)碼轉(zhuǎn)化為原碼, 最低位減一得到反碼,然后除符號(hào)位外所有位取反,得到結(jié)果
1 000000000000000000000000001
結(jié)果為1