如何將二進制補碼表示中的有符號整數轉換為符號和幅度表示,反之亦然?
def twos_comp_to_sign_mag(twos_comp_int):
# function definition here
def sign_mag_to_twos_comp(sign_mag_int):
# function definition here
twos_comp_to_sign_mag(255) == 129
sign_mag_to_twos_comp(129) == 255
# Since:
# 255 in binary is 1111_1111 or -1 in two's complement notation
# 129 in binary is 1000_0001 or -1 in sign-magnitude notation
uj5u.com熱心網友回復:
您只能對具有固定位數的整數執行這種轉換。我已經把它作為函式的引數。
這兩個操作是互補的,你可以使用相同的功能去兩個方向。您將符號位分開,然后補充其余部分并將它們組合在一起。
def twos_comp_to_sign_mag(value, bits=8):
sign_bit = 1 << (bits - 1)
sign = value & sign_bit
mask = sign_bit - 1
if sign:
value = -(value & mask)
return (sign_bit & value) | (value & mask)
>>> twos_comp_to_sign_mag(255)
129
>>> twos_comp_to_sign_mag(129)
255
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421402.html
標籤:
上一篇:如何在代碼中將攝氏度轉換為華氏度
下一篇:從點到旋轉橢圓的切線
