邏輯運算和位運算

2021-08-08 02:51:19 字數 891 閱讀 1205

本文主要針對的是邏輯運算(&&、||、!)和位運算(&、|、^、~),關於移位預算,現在對開發來說基本不用,就不說了。

邏輯運算主要是針對多個boolean表示式來說的,即a==1&&b==2這種,就是說邏輯運算子左右都是boolean型別的表示式,這裡!是個特例,它是一元運算子,只對右邊boolean表示式取反,即!ture 變成了false。&&就是左右都為true結果為true,其他為false;||左右有乙個是true結果就是true,否則為false。

位運算&、|、^是二元運算,~是一元運算,他們主要是針對整數資料進行按位操作,如1用八位2進製表示是00000001,1&1就是將左邊的數字1和右邊的數字1八位上的每一位進行布林代數,然後結果轉回來。若兩個輸入位都是1則&在輸出位生成1,否則為0;若兩個輸入位至少有1個是1則|輸出位為1;若兩個輸入位某乙個是1,但不全是1,那^則在輸出位就是1;~就是對位取反,因為2進製只有1、0即,~0就是1,~1就是0。

以上都是主要用法,下面說一下注意點。

1、位運算可以和=聯合使用:&=,就是按位運算之後賦值,但是~因為是一元運算子不可以和=聯合使用。

2、邏輯運算左右一定都是boolean表示式,不接受其他型別資料,而位運算則是對整數進行按位運算,只要有一邊資料是float、doulbe都不行,但是char是可以的,並且boolean也是可以的效果和邏輯運算類似,但是~是不能參與boolean型別的運算的。當然位運算與邏輯預算在進行boolean運算時有點區別,就是邏輯預算有「短路」,但是位運算是沒有的,即int a = 11, 邏輯運算true&&false&&a-->10 a的結果是11,沒有減;而如果是true&false&(a=a-1)>10,則a的結果是10,進行自減運算了。

現在除了jdk裡面有些使用了位運算,平常接觸到位運算一般不多,而主要是使用邏輯運算。主要是在一些筆試或者面試會被問到。

位運算和邏輯運算

public class test private static int j 0 private static boolean methodb int k j k return true public static void methoda int i methoda 0 system.out.pr...

位運算和邏輯運算

正數負數 原碼符號位為0 符號位為1 補碼原碼 符號位不變,其他取反 反碼原碼 補碼 1 比如說 5的原碼 00000000 00000000 00000000 00000101 5的原碼 10000000 00000000 00000000 00000101 5的反碼 00000000 00000...

邏輯運算 位運算

今天有人問我,邏輯運算是什麼,現在來解釋一下 邏輯運算就是相當於資訊競賽基礎工具中的一位的位運算 符號對應關係 wedge cap 交 and 與運算 vee cup 並 or 或運算 neg not 非 xor 異或運算 x k 將x的二進位制右移k位 如 x 10110 2 時,k 1,那麼x ...