二进制正负数转换和移位的规则详解
1、轉(zhuǎn)換規(guī)則
二進(jìn)制整數(shù)都是以補(bǔ)碼的形式出現(xiàn)的
正數(shù)的原碼、反碼、補(bǔ)碼都相同
負(fù)數(shù)的反碼就是正數(shù)的原碼先把最高位變?yōu)?然后其余的位取反
負(fù)數(shù)的補(bǔ)碼就是該負(fù)數(shù)的反碼加1。
2、二進(jìn)制的移位規(guī)則
<<和>>
二進(jìn)制數(shù),在向右移1位近似表示除以2,但是十進(jìn)制的奇數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后,在向右移時,最右邊的1將被直接抹去,說明向右移對于奇數(shù)并非完全近似于除以2。
左移 <<,和右移>> 兩種運(yùn)算中,符號位均參與移動,除了負(fù)數(shù)右移,高位補(bǔ)1之外,其他情況均在空位處補(bǔ)0。
在左移運(yùn)算中,由于符號位均參與向左移動,如上圖,最左位可能是1或者是0,正數(shù)向左移動的結(jié)果可能是正,也可能是負(fù);負(fù)數(shù)向左移動的結(jié)果同樣可能是正,也可能是負(fù)。
>>>>無符號右移
注意不存在<<<無符號向左移動的運(yùn)算方式!
對于三個大于號的>>>無符號向右移動時,正負(fù)數(shù)高位均補(bǔ)0,造成的結(jié)果就是:
正數(shù)不斷向右移動的最小值是0
負(fù)數(shù)不斷向右移動的最小值是1
無符號意即藐視符號位,符號位失去特權(quán)必須像其他平常的數(shù)字位一起向右移動,高位直接補(bǔ)0,根本不關(guān)心是正數(shù)還是負(fù)數(shù)。此運(yùn)算常用在高位轉(zhuǎn)低位的場景中。
為何負(fù)數(shù)不斷地?zé)o符號向右移動的最小值是1呢?在實(shí)際編程中,位移運(yùn)算僅作
用于整型(32位)和長整型(64位)數(shù)上,假如在整型數(shù)上移動的位數(shù)是32位,無論是否帶符號位以及移動方向,均為本身。因?yàn)橐苿拥奈粩?shù)是一個mod32的結(jié)果,
即35>>1與35>>33是一樣的結(jié)果。如果是長整型,mod64,即35<<1與35<<65的結(jié)果是一樣的。負(fù)數(shù)在無符號往右移動63位時,除最右邊為1 外,左邊均為0,達(dá)到最小值1,如果>>>64,則為其原數(shù)值本身。
總結(jié)
以上是生活随笔為你收集整理的二进制正负数转换和移位的规则详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广和通5G模组FG160FM160荣获2
- 下一篇: 稀疏表示(5)之帕德博恩轴承数据集测试非