java int轉(zhuǎn)二進(jìn)制 將二進(jìn)制數(shù)按位取反要注意什么呢?
將二進(jìn)制數(shù)按位取反要注意什么呢?按位求反是將每個(gè)數(shù)字的0變?yōu)?,1變?yōu)?。例如,binary:10011,按位求反是01100Java使用補(bǔ)碼來表示二進(jìn)制數(shù)。在補(bǔ)碼表示法中,最高位是符號位,正數(shù)的符號
將二進(jìn)制數(shù)按位取反要注意什么呢?
按位求反是將每個(gè)數(shù)字的0變?yōu)?,1變?yōu)?。例如,binary:10011,按位求反是01100
Java使用補(bǔ)碼來表示二進(jìn)制數(shù)。在補(bǔ)碼表示法中,最高位是符號位,正數(shù)的符號位是0,負(fù)數(shù)是1。補(bǔ)碼如下:對于正數(shù),最高位是0,其余表示值本身(用二進(jìn)制表示)。例如,42的補(bǔ)碼是00101010。對于負(fù)數(shù),將該數(shù)的絕對值的補(bǔ)碼逐位求逆,然后將1加到整數(shù)上,得到該數(shù)的補(bǔ)碼。例如,-42的補(bǔ)碼是11010110(00101010將11010101 1位取反,即11010110),0的補(bǔ)碼是唯一的,都是100000000。(在原碼和反碼的表示中,0和-0的表示不是唯一的,請參閱相應(yīng)的書籍)。此外,111111可用于表示-1的補(bǔ)碼(這也是補(bǔ)碼與原始碼和逆碼之間的差異)。
求負(fù)數(shù)的補(bǔ)碼時(shí)按位取反再加一是什么意思?
~077o=11000000B是正確的,但在計(jì)算機(jī)中,整數(shù)是用補(bǔ)碼表示的。正數(shù)的補(bǔ)碼與原碼相同,負(fù)數(shù)的補(bǔ)碼是最高位為1,表示負(fù)數(shù),其他低位則取負(fù)數(shù)的絕對值加1表示。例如,如果-64D由8位二進(jìn)制補(bǔ)碼表示,則最高位為1,表示負(fù)數(shù)。對于其余7位,-64D的絕對值為64D=1000000b,反向加1為1000000。如果與符號位(最高位)1拼接,則為11000000,因此11000000表示-64D。(后綴o表示八進(jìn)制,D表示十進(jìn)制,B表示二進(jìn)制)。