題目描述:給定乙個正整數,找出與其二進位制表示1的個數相同、略大和略小的2個數
# 獲取略大的數
def getnext(num):
# n是為了統計出p和c1、c0
n = num
c1 = 0
c0 = 0
while n&1 == 0 and n != 0:
c0 += 1
n >>= 1
while (n&1) == 1:
c1 += 1
n >>= 1
p = c0+c1
# 類似於11111……0000這種輸入和全0的輸入
if p == 31 or p == 0:
return 'error'
num |= 1<>= 1
# 判斷全0或者全1的情況
if n == 0:
return 'error'
while n&1 == 0 and n != 0:
c0 += 1
n >>= 1
p = c0+c1
# 將p位及以後的置0
num &= (~0<<(p+1))
# 在p後面放c1+1個1
mask = (1<<(c1+1))-1
num |= mask << (c0-1)
return num
位運算(1) 初識位運算
前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。廢話不多說,今天準備總結總結關於位運算的知識。程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0 1兩種狀態,...
LeetCode 位運算 位1的個數
編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 1 輸...
基礎演算法 位運算 找出奇特的數
leetcode 裡面有兩道關於找出落單的數的題 single number 和 single number ii single number 這道題是讓找出乙個陣列裡唯一乙個落單的數,其餘的數都出現了2次 這道題首要想到的是異或,因為異或的性質中有a a 0 0 a a,這樣就能找出那個只出現的1...