邏輯與、邏輯或、邏輯非是對boolean值得操作,屬於離散數學范疇。
按位與、按位或、按位非是對計算機位的操作,屬於計算機二進制位運算范疇。
邏輯與 都是真才真 c中區分&、&&的區別。
邏輯或 有真就是真 c中區分|、||的區別。
邏輯非 假才真 c中為!。
按位與、按位或、按位非按照上面的規則對每一位進行邏輯運算,其中1代表真0代表假。
一個是位操作,一個是條件計算操作
邏輯運算符用來判斷真假;位操作符用來計算。
C/C++ &與&& |與|| 的區別:
&&
表示邏輯與的意思,即為and。當運算符兩邊的表達式的結果都為true時,整個運算結果才為true,否則,只要有一方為false,則結果為false。
比如 12&&23的結果就是1,12&&-1 的結果是1,123&&0的結果就是0
&&還具有短路的功能,即如果第一個表達式為false,則不再計算第二個表達式,例如,對於if(str != null && !str.equals(“”))表達式,當str為null時,后面的表達式不會執行,所以不會出現NullPointerException
&
表示按位與。
&表示按位與操作,我們通常使用0x0f來與一個整數進行&運算,來獲取該整數的最低4個bit位,例如,0x31 & 0x0f的結果為0x01。
二進制與運算規則:1&1=1 1&0=0 0&0=0
15&127為什么等於15啊?
15二進制: (0000 1111)
127二進制: (1111 1111)
按位與自然就是(0000 1111)=15
||
表示邏輯或
邏輯或,是邏輯運算符,符號是“||”(在PASCAL中為"or")。 “邏輯或”相當於生活中的“或者”,當兩個條件中有任一個條件滿足,“邏輯或”的運算結果就為“真”
12||1 =1 12||0 =1 0||0 =0
|
表示按位或
按位或運算 按位或運算符“|”是雙目運算符。其功能是參與運算的兩數各對應的二進位(也就是最后一位)相或。只要對應的二個二進位有一個為1時,結果位就為1。
128: (0001 0000 0000)
127: (0000 1111 1111) (高位用0補齊)
按位或就是(0001 1111 1111)=255