程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 匯編語言 >> 計算機系統原理(六) 布爾代數以及C語言上的位運算

計算機系統原理(六) 布爾代數以及C語言上的位運算

編輯:匯編語言

布爾代數上的位運算

布爾代數是一個數學知識體系,它在0和1的二進制值上演化而來的。

我們不需要去徹底的了解這個知識體系,但是裡面定義了幾種二進制的運算,卻是我們在平時的編程過程當中也會遇到的。這四種運算分別是或、與、非和異或。下圖展示了在布爾代數的知識體系中,對這四種運算的定義。

從左至右依次是非、與、或以及異或。這個圖闡述的是針對一位二進制的運算結果,我們可以將其擴大到N位二進制。比如兩個二進制[aw,aw-1...a1]和[bw,bw-1...b1],它們的四種運算則是對兩者每一個相對應的位上做相應的運算。

也就是說,倘若假設結果是[cw,cw-1...c1]的話,那麼對於任意ci都滿足 ci = ai (|,&,^) bi,如果是對[aw,aw-1...a1]進行非運算的話,那麼ci = ~ai。

C語言上的位運算

在C語言中,也支持位運算,而它的計算方式就是布爾代數中的位運算。位運算我們最常使用的是掩碼的方式。比如我們知道一個整數x,如果我們想取得這個整數的最後一個字節的整數值的話,就可以采用位運算。就像下面這樣。

#include <stdio.h>
    
int main(){
     unsigned int i = 0x12345678;
     unsigned int j = 0xFF;
     unsigned int k = i & j;
     printf("%X\n",k);
}

最終我們希望得到的結果是78,也就是整數i的最後一個字節的值,我們使用掩碼0xFF以及與運算過濾掉整數i的高位的三個字節。以下是結果。

C語言的邏輯運算

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved