計算機發明之初就是為了計算數字,程式語言就是為了更好的利用計算機進行數字計算的。python作為乙個偏向於運算的程式語言,自然也少不了數字運算。
本次我們將學習python中關於二進位制的運算的部分。
1.十進位制轉二進位制
函式介紹:bin()函式用於將十進位制數字轉化為二進位制數字
用法:bin(十進位制數字)
例如計算十進位制100的二進位制資料
bin(100)
結果'0b1100100'
#python中二進位制的表現格式為 0b 加二進位制值。
#比如二進位制 00101100 在python的表現格式就為 0b101100,
#前置0可以省略,就是二進位制從第一位開始的連續的0可以省略
#比如二進位制 00101100,可以縮寫為 101100
2.二進位制轉十進位制
函式介紹:int()函式用於將十進位制數字轉化為二進位制數字
用法:int("二進位制資料",base=資料型別)
例如計算二進位制'0b1100100'的十進位制資料
int('0b1100100',base=2)
結果100
下面我將介紹兩個二進位制數字之間的運算符號:
1 .與運算(符號:& )
解釋:都為1才是1。也可以理解為都1才行,不然就是0。
舉個例子:
a = 240 #十進位制的240的二進位制數為 11110000
b = 139 #十進位制的139的二進位制數為 10001011
print (a & b) #列印 a 與 b的結果
執行結果:
128
運算過程:
1. 首先計算機會將 a 和 b 的數字轉化為二進位制,我們把他們依次列出來
a = 11110000
b = 10001011
2.我們把這兩個數字以每位對齊的形式列出來
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比較 a 和 b 中相同的部分,並將相同的部分列出來,不同的部分用0代替
1 0 0 0 0 0 0 0 --------------------c,這個就是 a 和 b 與運算得出的結果
4.把結果換算成為常見的十進位制
int('0b10000000',base=2) >>> 128 #得到數字128
5.所以 a 與 b 的結果是:128
2 .或運算(符號:| )
解釋:只要有乙個為1就是1。也可以理解為有1為1,否則為0
舉個例子:
a = 240 #十進位制的240的二進位制數為 11110000
b = 139 #十進位制的139的二進位制數為 10001011
print (a | b) #列印 a 與 b的結果
執行結果:
251
運算過程:
1. 首先計算機會將 a 和 b 的數字轉化為二進位制,我們把他們依次列出來
a = 11110000
b = 10001011
2.我們把這兩個數字以每位對齊的形式列出來
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比較 a 和 b 中為1的部分,並將為1的部分列出來,不為1的部分用0代替。
1 1 1 1 1 0 1 1 --------------------c,這個就是 a 和 b 或運算得出的結果
4.把結果換算成為常見的十進位制
int("0b11111011",base=2) >>> 251 #得到數字251
5.所以 a 或 b 的結果是:251
3 .異或運算(符號:^)
解釋:當數字不同時才為1,否則為0
舉個例子:
a = 240 #十進位制的240的二進位制數為 11110000
b = 139 #十進位制的139的二進位制數為 10001011
print (a ^ b) #列印 a 與 b的結果
執行結果:
123
運算過程:
1. 首先計算機會將 a 和 b 的數字轉化為二進位制,我們把他們依次列出來
a = 11110000
b = 10001011
2.我們把這兩個數字以每位對齊的形式列出來
1 1 1 1 0 0 0 0 --------------------a
1 0 0 0 1 0 1 1 --------------------b
3.比較 a 和 b 中不同的部分,並將不同的部分寫為1,相同的部分用0代替。
0 1 1 1 1 0 1 1 --------------------c,這個就是 a 和 b 異或運算得出的結果
4.把結果換算成為常見的十進位制
int("0b01111011",base=2) >>> 123 #得到數字123
5.所以 a 異或 b 的結果是:123
接下來我將介紹單個二進位制數的運算:
左位移運算(符號:<<)
解釋:將二進位制數字整體往左移動,你可以理解為往結尾出新增0
舉個例子:
a = 240 #十進位制的240的二進位制數為 11110000
print (a << 2) #列印 a 左位移兩位的結果
執行結果:
960
運算過程:
1. 首先計算機會將 a 的數字轉化為二進位制,我們以每位對齊的形式列出來
1 1 1 1 0 0 0 0 --------------------a
2.將數字整體左位移,結尾處用0補充,你可以理解為在結尾處新增0
1 1 1 1 0 0 0 0 0 0 --------------------c,這個就是 a 左位移兩位的結果
3.把結果換算成為常見的十進位制
int("0b1111000000",base=2) >>> 960 #得到數字960
4.所以 a 左位移兩位的結果是:960
右位移運算(符號:>>)
解釋:將二進位制數字整體往右移動,你可以理解為從末尾處刪除數字
舉個例子:
a = 240 #十進位制的240的二進位制數為 11110000
print (a >> 2) #列印 a 右位移兩位的結果
執行結果:
60
運算過程:
1. 首先計算機會將 a 的數字轉化為二進位制,我們以每位對齊的形式列出來
1 1 1 1 0 0 0 0 --------------------a
2.將數字整體右位移,你可以理解為從末尾處開始刪除數字
1 1 1 1 0 0 --------------------c,這個就是 a 右位移兩位的結果
3.把結果換算成為常見的十進位制
int("0b111100",base=2) >>> 60 #得到數字60
4.所以 a 右位移兩位的結果是:60
二進位制位運算子
二進位制位運算子用於直接對二進位制位進行計算,一共7個。i i 0 上面這行 的意思就是將i 不管是整數或小數 轉為32位整數。利用這一特性,可以寫乙個函式,將任意數值轉為32位整數。function toint32 x toint32 1.001 1 toint32 1.999 1 toint32...
二進位制中的運算子
二進位制中的運算子 與運算 兩者都為1則為1,否則為0 1 1 1,1 0 0,0 1 0,0 0 0 或運算 兩者都為0為0,否則為1 1 1 1,1 0 1,0 1 1,0 0 0 非運算 1取0 0 取1 1 0 0 1 1001 0110 異或運算 兩者相等為0,不等為1 1 1 0 1 0...
js 二進位制位運算子
ecmascript 整數有兩種型別,即有符號整數 允許用正數和負數 和無符號整數 只允許用正數 在 ecmascript 中,所有整數字面量預設都是有符號整數,這意味著什麼呢?有符號整數使用 31 位表示整數的數值,用第 32 位表示整數的符號,0 表示正數,1 表示負數。數值範圍從 214748...