iOS 二進制轉(zhuǎn)換以及位運算

進制之間的轉(zhuǎn)換

  • 十進制與二進制之間轉(zhuǎn)換
    • 二進制轉(zhuǎn)成十進制
      整數(shù)部分從個位開始,依次從2的0次方開始,讓每位相加即可轉(zhuǎn)換成功。
比如:11101
1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2 ^ 0 
= 16 + 8 + 4 + 0  + 1
= 29

小數(shù)部分從小數(shù)位最左邊開始,依次從2的-1次方開始,讓每位相加。

比如:0.001
0 * 2^-1 + 0 * 2 ^-2 + 1 * 2^-3
= 0 + 0 + 1/8
= 0.125
  • 十進制轉(zhuǎn)成二進制
    整數(shù)部分除以2,然后取出余數(shù),再用商依次往后面除,直到商為0。最后從第一個余數(shù)開始代表低位最后一個余數(shù)代表高位,即得到對應(yīng)的二進制數(shù)。
比如:29
29 / 2 = 商 14 余 1
14 / 2 = 商 7 余 0
7 / 2 = 商 3 余 1
3 / 2 = 商 1 余 1
1 / 2 = 商 0 余 1

所以: 29 = 11101

小數(shù)部分計算方法:用小數(shù)部分乘以2,然后取整數(shù)部分,依次乘到結(jié)果為1時結(jié)束,然后取出每次的整數(shù)按順序做為小數(shù)部分即可。

比如:0.125
0.125 * 2 = 0.25 整數(shù)部分:0
0.25 * 2 = 0.5 整數(shù)部分:0
0.5 * 2 = 1 整數(shù)部分:1

所以:0.125 = 0.001
  • 八進制、十六進制都按照以上方法計算即可。

位運算

  • 按位與:&
    如果兩個相應(yīng)的二進制位都為1,則該位的結(jié)果值為1,否則為0
  • 按位或:|
    兩個相應(yīng)的二進制位中只要有一個為1,該位的結(jié)果值為1
  • 按位異或:^
    若參加運算的兩個二進制位值相同則為0,否則為1
  • 取反:~
    ~是一元運算符,用來對一個二進制數(shù)按位取反,即將0變1,將1
  • 左移:<<
    用來將一個數(shù)的各二進制位全部左移N位,右補0
  • 右移:>>
    將一個數(shù)的各二進制位右移N位,移到右端的低位被舍棄,對于無符號數(shù), 高位補0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容