def subset(nums):
"""通過二進位制數的特性,求給定集合的子集
:param nums:
:return:
"""n = len(nums)
res =
for i in range(2 ** n):
cur =
for j in range(n):
if i & (2 ** j) == 2 ** j:
return res
def exchange(x, y):
"""不用額外的空間交換兩個變數的值
用到的異或的運算,有兩個公式(相同為0, 不同為1)
0 ^ a = a
a ^ a = 0
:param x:
:param y:
:return:
"""x ^= y
y ^= x
x ^= y
return x, y
"""給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。
返回被除數 dividend 除以除數 divisor 得到的商。
示例 1:
輸入: dividend = 10, divisor = 3
輸出: 3
示例 2:
輸入: dividend = 7, divisor = -3
輸出: -2
說明:被除數和除數均為 32 位有符號整數。
除數不為 0。
假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。本題中,如果除法結果溢位,則返回 231 − 1"""
class solution:
def divide(self, dividend, divisor):
""":type dividend: int
:type divisor: int
:rtype: int
"""if divisor == 0:
return pow(2, 31) - 1
sign = 1 if divisor * dividend >= 0 else -1
divisor = divisor if divisor >= 0 else -divisor
dividend = dividend if dividend >= 0 else -dividend
res = 0
while dividend >= divisor:
i = 0
tmp = divisor
while tmp <= dividend:
tmp <<= 1
i += 1
print("i is {}, dividend is {}, tmp is {}".format(i, dividend, tmp))
res += 1 << (i - 1)
dividend -= (tmp >> 1)
res *= sign
if res >= -pow(2, 31) and res < pow(2, 31):
return res
else:
return pow(2, 31) - 1
s = solution()
print(s.divide(7, 3))
C 中二進位制運算在許可權驗證的應用
在我的另一篇文章中 委託在許可權驗證中的應用 見我的blog http blog.csdn.net curllion 或http spaces.msn.com members curllion 提到了乙個函式validateauthor,其實我以前見過這樣實現的,就是乙個許可權用乙個文本來表示,可能...
二進位制運算
運算子 符號含義例子與 兩邊都為真時為真 1 1 1或 任何一邊為真時為真1 非取反 如果1則為0 如果0為1 1 0 異或 兩邊相同為1 兩邊不同為0 1 1返回false 1 2返回true 運算子符號含義 例子邏輯與 判斷兩邊 都為真時為真 true true true或 判斷兩邊 任何一邊為...
二進位制運算( )
負數轉化二進位制步驟 將負數取絕對值,得到其絕對值的二進位制 6取絕對值為6,6的二進位制 0110,然後補充0110位32位 000 000 0110 一共32位,即0110前面還有28個0 然後每位取反 111 111 1001 一共32位 接著對上面得到的二進位制 111 111 1001 進...