C#位操作


一.原碼與補碼

  在計算機系統中,數值一律用補碼來存儲(表示)。主要原因:使用補碼,可以將符號位和其他位統一處理;同時減法也可按加法來處理。另外,兩個補碼表示的數相加時,如果最高位(符號位)有進位,則進位被舍棄。

 

1.原碼轉補碼分兩種情況
(1)正數的補碼:與原碼相同(已知原碼求補碼)
  例如:+9的原碼是0000 1001。補碼也是0000 1001。


(2)負數的補碼:符號位為1,其余位為該數絕對值的原碼按位取反,然后整個數加1。
  例如:-7原碼為1000 0111(高位為符號位,1表示負數,0表示正數),補碼為1111 1001.

 

2.補碼轉原碼也分兩種情況(已知補碼求原碼)
(1)正數的原碼:與補碼相同
  例如:+9的補碼是0000 1001。原碼也是0000 1001。


(2)負數的原碼:符號位為1,其余位為該該補碼按位取反,然后整個數加1。
  例如:-7的補碼是1111 1001,原碼是1000 0111。

.移位運算符   

  左移 (<<) 

  將第一個操作數向左移動第二個操作數指定的位數,空出的位置補0。
  左移相當於乘. 左移一位相當於乘2;左移兩位相當於乘4;左移三位相當於乘8。

  x<<1等於 x*2
  x<<2等於x*4

  同理, 右移即相反:

  右移 (>>)
  將第一個操作數向右移動第二個操作數所指定的位數,空出的位置補0。

  右移相當於整除. 右移一位相當於除以2;右移兩位相當於除以4;右移三位相當於除以8。

  x>>1等於 x/2
  x>>2等於 x/4 

因為位移比乘除速度快.對效率要求高,而且滿足2的冪次方的乘除運方,可以采用位移的方式進行

位運算只能用於byte short char int long 等整型類型,不能應用於浮點數操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM