&運算子在計算機中是二進位制運算子,常使用&=,即先進性位於運算子,在進行賦值,例如 a&=b 等價於 a=a&b。位於運算只二進位制「保同除異」
a = 3 #a = 011
b = 2 #b = 010
a& = b #a = 010
print(a) #a = 2
題目描述: 輸入乙個整數,輸出該數二進位制表示中1的個數。其中負數用補碼表示。
計算乙個整數的二進位制1的個數,我們知道,我們熟悉的10進製在計算機中是以補碼的形式儲存的,正整數的補碼,反碼,原碼是一樣的,二進位制中只需要迴圈消除掉1個位數,即可計算1的個數,按n&(n-1),從右至左依次消除1,計數器+1 即可
而負數在計算機中是以補碼存在的,負數首位是1,如果直接按照n&(n-1),會怎麼樣呢
def
number1
(n):
# write code here
cnt =
0while n <0:
cnt +=
1 n =
(n -1)
& n print
(n)if n <
-0xffffffff
:#這裡判斷下n的數值,會發現 n趨向計算機字長
break
#[-0xffffffff],甚至會超出字長
return cnt
a = number1(-1
)print
(a)
所以在負數運算時要將負數轉換成正整數,與0xffffffff位於,得到相應的正整數,在計算1的個數 n&n-1
所以何必**如下
def
number1
(n):
# write code here
cnt =
0if n <0:
n = n &
0xffffffff
#16進製制 0x
while n <0:
cnt +=
1 n =
(n -1)
& n print
(n)# if n < -128:
# break
return cnt
Python 海象運算子應用
leetcode上有道面試題 判斷字元是否唯一 其中有乙個答案是利用位運算子解決 class solution def isunique self,astr str bool t 0for c in astr if t p 1 ord c 97 return false t p return tru...
運算子應用詳解
c語言中的 用法可謂靈活多樣,掌握了這些運算子的用法,可以大大提高程式設計效率,尤其涉及到二進位制位的程式設計,其優點將會更加淋漓盡致地發揮出來。直接上 1.輸入乙個十進位制數,返回它的二進位制序列中 1 的個數。方法1 將value值和1進行相與,若結果為1,則計數器加1.再將value整體右移,...
python運算子中 Python中的運算子
python中的運算子 數 算符 比較運算子 邏輯運算子 賦值運算子 1.數 算符 乘法 除法 取模 取餘 求餘數 整除 冪運算 1 和數學中的功能一模一樣,沒有區別 print 1 1 print 1 1 print 1 1 注意 的結果是浮點數。print 1 1 1.0 print 5 2 2...