位運算( )與邏輯運算( )區別

2021-06-25 17:46:24 字數 1305 閱讀 8392

首先從概念上區分下,位運算是將運算子兩邊的數字換算成二進位制(例:0000010001)後比較相同位置上的0、1進行運算的。邏輯運算即比較運算子兩邊的邏輯值(true或false)。概念比較抽象,下邊借助實際例子比較下。

位運算先將每個數轉換成二進位制,然後進行,位或(|)表示相對應的每位至少有乙個為1,則結果為1,只有兩個都為0,結果才為0.位與(&)表示相對應的兩位必須都為1,結果才為1,否則為0。位異或(^)比較特殊,它比較的是如果兩個不同則值為1(如:(1、0)(0、1)),相同(如:(1、1)(0、0))則為0。

例如: 3 |2

11       //二進位制的3

10       //二進位制的2

--------------------

11       //二進位制的3

例如: 3 & 2

1110

---------------------

10       //二進位制的2

例如:  3^2 11

10---------------------

01       //二進位制的1

該例子介紹的是位運算的原理,注意下這裡位運算|的結果是3,&的結果是2  這裡剛好和比較的數字2、3重複只是個巧合,請不要以為位運算的結果是兩個數字中的乙個。

邏輯運算

先將邏輯運算子(&& ||)兩邊的表示式都換算成邏輯值(true、false),邏輯或(||)表示如果兩個值至少有乙個為ture,則結果為true,只有兩個都為false,結果才為false。邏輯與(&&)表示兩個都為true,結果才為true,否則為false。這裡比較簡單,就不做例子介紹了。 作用

一、按位與 &

1、 清零特定位 (mask中特定位置0,其它位為1,s=s&mask) s=s&mask

2、取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask) s=s&mask

二、按位或 |

常用來將源運算元某些位置1,其它位不變

三、按位異或

1、使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)

2、把乙個數自清零,如 a=a xor a 不管a是多少,最後a都等於零

按位與運算通常用來對某些位清0或保留某些位。

例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。

高八位清0,保留低八位,只要用乙個數前邊8位為0(&的情況下有乙個為0即為0,就意味著清空沒值了)後八位為1 (1與原數字(0、1)比較後值還為原數字的值,意味著保留原值)即可成功,那麼這個數就是0000000011111111即255。

邏輯運算與位運算區別

位運算 位運算是講資料先轉化為二進位制數,再逐位 bit 按規則計算 1.按位與 運算子 規則 全1則1,否則為0 例如 a 00000000 00000000 00000000 00000111 b 10000001 10100101 11110011 10101011 c 00000000 00...

邏輯位運算與邏輯運算

兩者非常容易混淆,其實這是截然不同的兩種運算.1.邏輯位運算 與運算 1 2 0 0000 0001 0000 0010 0000 0000 0 或運算 1 2 3 0000 0001 0000 0010 0000 0011 3 按位求反 運算,異或 運算略.移位 左移,右移 運算略.2.邏輯運算 ...

邏輯運算與位運算

1.邏輯運算 邏輯運算又稱布林運算,它的結果應該是乙個真假值,也就是true還是false。1 與運算,同為真時才為真。2 或運算,同為假時才為假,也就是說有乙個為真即為真。3 非運算,true false,false true。4 異或運算,按照每一位進行異或,相同為0,不同為1。2.位運算 1 ...