2018-9-27

進(jìn)制

計(jì)算機(jī)在存儲數(shù)字的時(shí)候都是以二進(jìn)制的形式去存的 十進(jìn)制、十六進(jìn)制、八進(jìn)制、二進(jìn)制

1.十進(jìn)制

基數(shù):0,1,2,3,4,5,6,7,8,9

進(jìn)位:逢10進(jìn)1

每一位的值: 111 = 1 * 10^0 + 1 * 10^1 + 1 * 10^2 = 111

2.二進(jìn)制

所有二進(jìn)制數(shù)都是由0和1組成: 011001

基數(shù):0,1

進(jìn)位:逢2進(jìn)1? ? ? 100? ? 1011

每一位的值:111 = 1 * 2^0 + 1 * 2^1 + 1 * 2^2 = 7

3.八進(jìn)制

基數(shù):0,1,2,3,4,5,6,7

進(jìn)位:逢8進(jìn)1

每一位的值:111 = 1 * 8^0 + 1 * 8^1 + 1 * 8^2 = 73

4.十六進(jìn)制

基數(shù):0-9,a-f(A-F) ---> a(10),b(11),c(12),d(13),e(14),f(15)

進(jìn)位:逢16進(jìn)1

每一位的值:111 = 116^0 + 116^1 + 1*16^2 = 273

5.進(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

6.python對進(jìn)制的支持

python支持通過二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制的形式來直接表示整數(shù)

a.十進(jìn)制:直接寫的數(shù)字的值都是十進(jìn)制的數(shù)

b.二進(jìn)制:需要加前綴 -> 0b

c.八進(jìn)制:需要加前綴 -> 0o/0O

d.十六進(jìn)制:需要加前綴 -> 0x/0X

e.進(jìn)制的轉(zhuǎn)換(結(jié)果是字符串)

bin(整數(shù)) --> 將括號中的整數(shù),轉(zhuǎn)換成二進(jìn)制形式

oct(整數(shù)) --> 將括號中的整數(shù),轉(zhuǎn)換成八進(jìn)制形式

hex(整數(shù)) --> 將括號中的整數(shù),轉(zhuǎn)換成十六進(jìn)制形式

================

位運(yùn)算

計(jì)算機(jī)在存數(shù)字的時(shí)候,存的是數(shù)字的二進(jìn)制的補(bǔ)碼

計(jì)算機(jī)內(nèi)存的最小單位是位:1位只能存儲兩個(gè)狀態(tài)

8位 = 1字節(jié)

a.原碼:整數(shù)數(shù)字的二進(jìn)制形式

最高位是符號位,如果正數(shù)符號位為0,負(fù)數(shù)符號位為1

10的原碼? 00000000 00001010

-10的原碼 10000000 00001010

b.反碼

正數(shù)的反碼是它的原碼

負(fù)數(shù)的反碼就是這個(gè)數(shù)的原碼的符號位不變,然后其他位置上的數(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,反碼是原碼符號位不變,其他位取反

為什么計(jì)算機(jī)存儲數(shù)據(jù)的時(shí)候存補(bǔ)碼?:因?yàn)橛?jì)算機(jī)中只有加法器,只能進(jìn)行加操作。存原碼對負(fù)數(shù)進(jìn)行加操作的時(shí)候有問題

計(jì)算存數(shù)字存補(bǔ)碼,計(jì)算的時(shí)候也是補(bǔ)碼,最后結(jié)果看的時(shí)候看原碼

位運(yùn)算符:&(按位與),|(按位或), ^(異或), ~(取反), >>(右移), <<(左移)

1.&(按位與)

數(shù)字1 & 數(shù)字2 :兩個(gè)都為1結(jié)果才是1,否則為0

3 & 2 --> 00000011 & 00000010 == 00000010-3 & 2 --> 11111101 & 00000010? == 00000000print(3&2)print(-3&2)

作用:讓指定位上數(shù)置零,或者保留某一位上的值

2.|(按位或)

數(shù)字1 | 數(shù)字2: 只要有一個(gè)為1,結(jié)果就是1;兩個(gè)都為,結(jié)果才是0

3| 2 --> 00000011 |00000010=00000011-3| 2 --> 11111101 |00000010= (補(bǔ))11111111= (原)10000001print(3|2)

print(-3|2)

3.^(異或)

數(shù)字1 ^ 數(shù)字2: 不同為1,相同為0

3^2 --> 00000011 ^ 00000010 = 00000001 -3^2 --> 11111101 ^ 00000010 = (補(bǔ))11111111 = 10000001print(3^2)print(-3^2)

4.~(取反)

~數(shù)字: 將每一位取反

~3 ---> ~00000011 = 11111100(補(bǔ)) =? 10000100~-3 ---> ~11111101 = 00000010print(~3)print(~-3)

5.左移(重點(diǎn)掌握)

數(shù)字 << 位數(shù): 將補(bǔ)碼向左移動指定的位數(shù),符號位不變,在最后面補(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ǔ)碼向右移動指定的位數(shù),符號位不變,在符號位的后面補(bǔ)指定個(gè)數(shù)的0(正)或者1(負(fù))

規(guī)律(只適用于正數(shù)):m >> n == m // (2^n)

=======

字符串(str)

1.什么是字符串

python中通過單引號或者上引號引起來的字符集就是字符串

字符串中引號中的字符集,就是又各種不同的字符來組成的。

2.Unicode編碼

python中字符串中字符采用的是Unicode編碼

Unicode編碼:是通過兩個(gè)字節(jié)來對一個(gè)字符進(jìn)行編碼(0~ 2^16-1)。它幾乎包含了世界上所有的符號

ASCII編碼:是通過一個(gè)字節(jié)來對一個(gè)字符進(jìn)行編碼

Unicode編碼中包含了ASCII碼表

chr(數(shù)字): 獲取數(shù)字在Unicode編碼表中對應(yīng)的字符,返回的是只有一個(gè)字符的字符串

print(chr(97))print(chr(0x1813))print(chr(0x1b02))

ord(字符): 獲取字符對應(yīng)的Unicode碼

print(hex(ord('熊')),hex(ord('飛')))

可以直接在字符串中寫字符對應(yīng)的編碼值,格式:\u四位的十六進(jìn)制

str2 ='\u718a\u98de 你好'print(str2)

3.轉(zhuǎn)義字符(適用于所有語言)

一些特能和具有特殊意義的字符,直接放在字符串的引號中無效,需要通過\來轉(zhuǎn)義

\n ---> 換行\(zhòng)' ----> '\t ----> 制表符\\ ----> \\" ----> "

作者:xiongfei11111

鏈接:http://www.itdecent.cn/p/f59bfb9f7165

來源:簡書

簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容