計算機邏輯運算總結


 

在計算機二進制中,最高位表示符號位,若為0表示正數,若為1表示負數。同時我們需要清楚知道原碼、反碼、補碼的概念,這里請自行了解。

 

取非/反(~):在二進制補碼中,要獲取數字的負數,需反轉所有位並加1。比如(~-5),5是00000101,那么-5則是:11111010 + 00000001 = 11111011,然后再取(~)是00000100,所以結果為4。若是正數,則其補碼是其本身,比如(~5),5是00000101,那么直接取(~),所以結果為11111010,其實這個值就是6的補碼即-6。比如如下例子:

~(-3) = 2
~(-2) = 1
~(-1) = 0
~0 = -1
~1 = -2
~2 = -3

由上我們可總結出:~x = -x - 1。

 

左移(<<):給定數據乘以2的位數次冪。例如11<<2(11 * 2^2 = 44)

 

有符號右移(>>):進行向右移位后,將最左邊的符號位(Most Significant Bit MSB)填充到最左邊的位,這稱為符號擴展,當向右移動負數時,它可以保留負號的符號。若為正數,則結果為給定數據除以2的位數次冪並舍去模。例如11>>2(11/2^2 = 2),若為負數,則結果為根據正數的結果取負數並減1,也就是(-x-1)。

 

無符號右移(>>>):有符號右移保留符號位,而無符號位右移則是不保留以0進行填充,也就是無符號右移主要是針對正數,此時結果和有符號右移中的數據不帶符號一致。

 

 

 


免責聲明!

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



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