一、預備知識:
1.十進位制轉二進位制&二進位制轉十進位制
2.**實現:
# -*- coding: utf-8 -*-
#十進位制轉二進位制
x = input("請輸入十進位制整數:")
x = int(x)
x = bin(x)
print(" 二進位制:",x[2:])
#二進位制轉十進位制
x = input("請輸入二進位制整數:")
x = int(x,2)
print(" 十進位制結果為:",x)
二、運算方法與規則:1.前言:在python中,位運算子包括位與(&)、位或(|)、位求反(~)、位異或(^)、左移位(右移位(>>)。
2.運算方法與規則:位運算子只能適用於整數,其總體運算規則為:首先把整數轉換為二進位制表示形式,按最低位對齊,短的高位補0,然後進行位運算,最後把得到的二進位制轉換為十進位制數。
3.具體規則:
4. 舉例說明:
以13&17為例,首先把13轉換為二進位制數1101,把17轉換為10001,然後按最低位對齊,13的二進位制形式高位補0得到01101,按位進行與運算:
01101 <====13
10001 <====17
00001 ====>1
如果要計算13|17,則計算方法如下:
01101 <====13
10001 <====17
11101 ====>29
如果要計算13^17,則計算方法如下:
01101 <====13
10001 <====17
11100 ====>28
以13<<1為例,首先將13轉換為二進位制形式1101,然後左移1位,最低位補0,得11010,轉換為十進位制數為26,相當於13*2。
以13>>1為例,首先將13轉換為二進位制形式1101,然後右移1位,最低位丟棄,最高位使用符號位0補充,得110,轉換為十進位制數為6,相當於13//2。
位求反比較難理解一些,並不是簡單地按位求反。這裡的關鍵在於,計算機內部是使用二進位制補碼形式來儲存資料的,整數的補碼與原碼相同,而負數的補碼為其絕對值的原碼各位求反再加1,這是理解位求反運算的關鍵。以~13為例,計算過程為:首先把13轉換為二進位制形式00001101(這裡以8位為例,這不影響計算過程和結果),各位求反得到11110010,這是乙個負數的二進位制補碼形式,其對應的數值是-14。再以~(-123)為例,首先將其轉換為二進位制補碼形式10000101,然後按位求反得01111010,轉換為十進位制為122。
三、應用(演算法實現):
1.1.演算法功能:給定乙個非空整數陣列,除乙個元素外,每個元素出現兩次。找到那乙個。
1.2.**實現:
# -*- coding: utf-8 -*-
## algorithm function:
class solution:
def singlenumber(self, nums):
""":type nums: list[int]
:rtype: int
"""res = 0
for i in nums:
res = res^i
return res
a = solution().singlenumber([1,1,2])
print(a)
2.1運算案例:針對乙個字串中的字元元素進行位運算。
2.2運算過程展示:
位運算子與位運算
位運算是對二進位制位的操作,它應用於整形資料,把整形資料看成固定的二進位制序列,然後對二進位制序列進行位運算 按位與運算 按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 否則為0。參與運算的數以補碼方式出現。例c a b a 1010...
python運算子 之位運算子
支援的資料型別有數字 集合 set 僅支援 交集 並集 不同集 其他型別都不支援位運算。按位運算子是把數字看作二進位制來計算的。位運算子作用於所有的位上,並且按位運算。python中按位運算法則如下 假設a 60,b 13 操作符描述例項 按位與運算子,當且僅當兩個運算元的某一位都非0時,該位的結果...
Python位運算子
按位運算子是把數字看作二進位制來進行計算的。python中的按位運算法則如下 下表中變數 a 為 60,b 為 13,二進位制格式如下 a 0011 1100 b 0000 1101 a b 0000 1100 a b 0011 1101 a b 0011 0001 a 1100 0011運算子 描...