進(jìn)制
計(jì)算機(jī)在存儲(chǔ)數(shù)字的時(shí)候都是以二進(jìn)制的形式去存的
十進(jìn)制晰搀、十六進(jìn)制呀舔、八進(jìn)制场斑、二進(jìn)制
1.進(jìn)制之間的轉(zhuǎn)換
a.其他進(jìn)制轉(zhuǎn)換成10進(jìn)制:每一位上的數(shù)乘以進(jìn)制幕次數(shù)糠睡,然后求和
b.十進(jìn)制轉(zhuǎn)其他進(jìn)制:輾轉(zhuǎn)取余法
123:(2)0 0111 1011 60:(2)111100
123:(8)173 173
123:(16)7B 7b
c.二進(jìn)制轉(zhuǎn)8進(jìn)制: 每3位二進(jìn)制轉(zhuǎn)換成1位;
八轉(zhuǎn)二: 一位8進(jìn)制轉(zhuǎn)換成3位的二進(jìn)制
(8)671 --> (2)110 111 001
d.二進(jìn)制轉(zhuǎn)16進(jìn)制: 每4位二進(jìn)制轉(zhuǎn)換成1位
十六轉(zhuǎn)二: 一位的16進(jìn)制轉(zhuǎn)換成4位的二進(jìn)制
(16)67 --> (2)0110 0111
2.python對(duì)進(jìn)制的支持
python支持通過(guò)二進(jìn)制挽鞠、八進(jìn)制、十進(jìn)制和十六進(jìn)制的形式來(lái)直接表示整數(shù)
a.十進(jìn)制:直接寫的數(shù)字的值都是十進(jìn)制的數(shù)
b.二進(jìn)制:需要加前綴 -> 0b
number = 0b1010
number2 = 0b1110 + 10
print(number2)
c.八進(jìn)制:需要加前綴 -> 0o/0O
0o67
d.十六進(jìn)制:需要加前綴 -> 0x/0X
number = 0Xfa5
print(number)
print(type(0xfa))
e.進(jìn)制的轉(zhuǎn)換(結(jié)果是字符串)
bin(整數(shù)) --> 將括號(hào)中的整數(shù),轉(zhuǎn)換成二進(jìn)制形式
print(bin(10), bin(0o56), bin(0xaf))
print(type(bin(10)))
oct(整數(shù)) --> 將括號(hào)中的整數(shù)信认,轉(zhuǎn)換成八進(jìn)制形式
print(oct(10), oct(0b110110), oct(0xaf))
hex(整數(shù)) --> 將括號(hào)中的整數(shù)材义,轉(zhuǎn)換成十六進(jìn)制形式
print(hex(10), hex(0b110110), hex(0o56))
2.補(bǔ)碼和反碼
計(jì)算機(jī)在存數(shù)字的時(shí)候,存的是數(shù)字的二進(jìn)制的補(bǔ)碼
計(jì)算機(jī)內(nèi)存的最小單位是位:1位只能存儲(chǔ)兩個(gè)狀態(tài)
8位 = 1字節(jié)
a.原碼:整數(shù)數(shù)字的二進(jìn)制形式
十進(jìn)制的10的原碼就是:1010
最高位是符號(hào)位嫁赏,如果正數(shù)符號(hào)位為0其掂,負(fù)數(shù)符號(hào)位為1
10的原碼 00000000 00001010
-10的原碼 10000000 00001010
b.反碼
正數(shù)的反碼是它的原碼
負(fù)數(shù)的反碼就是這個(gè)數(shù)的原碼的符號(hào)位不變,然后其他位置上的數(shù)取反(0->1,1->0)
-10 -> (原碼)10000000 00001010 ->(反碼)11111111 11110101
c.補(bǔ)碼
正數(shù)的補(bǔ)碼就是它的原碼
負(fù)數(shù)的補(bǔ)碼是它的反碼加1
-10 -> (反碼)11111111 11110101 -> (補(bǔ)碼)1111111 11110110
總結(jié):正的反碼和補(bǔ)碼都是原碼;負(fù)數(shù)的補(bǔ)碼是反碼加1潦蝇,反碼是原碼符號(hào)位不變款熬,其他位取反
為什么計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的時(shí)候存補(bǔ)碼?:因?yàn)橛?jì)算機(jī)中只有加法器攘乒,只能進(jìn)行加操作贤牛。
存原碼對(duì)負(fù)數(shù)進(jìn)行加操作的時(shí)候有問(wèn)題
3.位運(yùn)算
計(jì)算存數(shù)字存補(bǔ)碼,計(jì)算的時(shí)候也是補(bǔ)碼则酝,最后結(jié)果看的時(shí)候看原碼
位運(yùn)算符:&(按位與)殉簸,|(按位或), ^(異或), ~(取反), >>(右移), <<(左移)
1.&(按位與)
數(shù)字1 & 數(shù)字2 :兩個(gè)都為1結(jié)果才是1沽讹,否則為0
作用:讓指定位上數(shù)置零般卑,或者保留某一位上的值
2.|(按位或)
數(shù)字1 | 數(shù)字2: 只要有一個(gè)為1,結(jié)果就是1爽雄;兩個(gè)都為蝠检,結(jié)果才是0
3.^(異或)
數(shù)字1 ^ 數(shù)字2: 不同為1,相同為0
4.~(取反)
~數(shù)字: 將每一位取反
5.左移(重點(diǎn)掌握)
數(shù)字 << 位數(shù): 將補(bǔ)碼向左移動(dòng)指定的位數(shù)盲链,符號(hào)位不變蝇率,在最后面補(bǔ)指定個(gè)數(shù)的0
規(guī)律(正數(shù)和負(fù)數(shù)都實(shí)用):m << n == m * (2^n)
num * 2 == num << 1 num * 4 == num << 2
6.右移
數(shù)字 >> 位數(shù): 將補(bǔ)碼向右移動(dòng)指定的位數(shù)迟杂,符號(hào)位不變刽沾,在符號(hào)位的后面補(bǔ)指定個(gè)數(shù)的0(正)或者1(負(fù))
規(guī)律(只適用于正數(shù)):m >> n == m // (2^n)
4.字符串
1.什么是字符串
python中通過(guò)單引號(hào)或者上引號(hào)引起來(lái)的字符集就是字符串
字符串中引號(hào)中的字符集,就是又各種不同的字符來(lái)組成的排拷。
2.Unicode編碼
python中字符串中字符采用的是Unicode編碼
Unicode編碼:是通過(guò)兩個(gè)字節(jié)來(lái)對(duì)一個(gè)字符進(jìn)行編碼(0~ 2^16-1)侧漓。它幾乎包含了世界上所有的符號(hào)
3.ASCII編碼:是通過(guò)一個(gè)字節(jié)來(lái)對(duì)一個(gè)字符進(jìn)行編碼
Unicode編碼中包含了ASCII碼表
chr(數(shù)字): 獲取數(shù)字在Unicode編碼表中對(duì)應(yīng)的字符,返回的是只有一個(gè)字符的字符串
print(chr(97))
print(chr(0x1813))
print(chr(0x1b02))
ord(字符): 獲取字符對(duì)應(yīng)的Unicode碼
print(ord('余'), ord('婷'))
print(ord('??'))
print(0xffff)
可以直接在字符串中寫字符對(duì)應(yīng)的編碼值,格式:\u四位的十六進(jìn)制
str1 = 'ah\u4e00\u4e01jhuu'
print(str1)
3.轉(zhuǎn)義字符(適用于所有語(yǔ)言)
一些特能和具有特殊意義的字符监氢,直接放在字符串的引號(hào)中無(wú)效布蔗,需要通過(guò)\來(lái)轉(zhuǎn)義
\n ---> 換行
' ----> '
\t ----> 制表符
\ ---->
" ----> "