python中的整形以補碼形式儲存。
正數儲存是本身,負數的儲存形式是原碼的二進位制表示加上個負號。
負數的補碼: 負數&0xffffffff
負數補碼轉換為負數形式 : ~(a^0xffffffff)
print bin(-3)
//-0b11
print bin(-3 & 0xffffffff)
//0b11111111111111111111111111111101
例題 面試題 17.01. 不用加號的加法
# ^是當前數字的和, &是進製
def add(self, a: int, b: int) -> int:
# 將數字轉為無符號整數
a &= 0xffffffff
b &= 0xffffffff
while b:
a, b = a^b, ((a&b)<<1)&0xffffffff
# 根據範圍判定結果,對映為有符號整型
return a if a<0x80000000 else ~(a^0xffffffff)
桶排序對於負數的處理
關於桶排序的演算法思想就不再敘述了,目前桶排序主要用於在o n 的時間內處理正數的排序問題,然而一旦遇到負數問題,就只能把數分成兩堆,對正負數分開去排序,這樣無疑比較麻煩。今天我做了乙個桶排序的題,對於輸入都是32位整形數列進行桶排序,值想到了乙個可以同時處理正負數的演算法。通常我們的輸入都是十進位...
對負數取餘的處理
自 在vc 中計算 1 3 其結果是 1 而不是 我所要的2。在格仔座標中,如果希望超過邊界的數從另一面回到視野中,取余是非常有用的作法 原數 2 10 1 2 34 取餘120 1201 1 3 1 2即 3 2 1 而由於vc 在取整的時候,預設是將小數部分捨去,所以 1 3 0.333 0 於...
python負數報錯 Python中列表的切片
切片 slice 用來獲取列表中的片段,即原始列表的子列表。切片用被方括號 括起來且用冒號 分隔的數字來表示 fruits 0 3 獲取列表中的前3項 fruits 2 1 使用負數切片 strawberry 注意,切片包含索引項的起始值,而不包含結束值。因此,使用切片fruits 0 3 獲取的是...