正數負數
原碼符號位為0
符號位為1
補碼原碼
符號位不變,其他取反
反碼原碼
補碼+1
比如說:
5的原碼:00000000 00000000 00000000 00000101
-5的原碼:10000000 00000000 00000000 00000101
5的反碼:00000000 00000000 00000000 00000101
-5的反碼:11111111 11111111 11111111 11111010
5的補碼:00000000 00000000 00000000 00000101
-5的補碼:11111111 11111111 11111111 11111011
int i = 5;
int j = -5;
system.out.println(integer.tobinarystring(i));
//101 之前的29位全0被忽略了
system.out.println(integer.tobinarystring(j));
//11111111111111111111111111111011
2.1、位運算
位運算是將資料先轉化為二進位制數補碼形式,再逐位(bit)按規則計算
符號描述
運算規則
&按位與
兩個位都為1時,結果才為1
|按位或
兩個位都為0時,結果才為0
^按位異或
兩個位相同為0,相異為1
~按位非
0變1,1變0
<<
左移各二進位全部左移若干位,高位丟棄,低位補0
>>
右移各二進位全部右移若干位,對無符號數,高位補0,有符號數,各編譯器處理方法不一樣,有的補符號位(算術右移),有的補0(邏輯右移)
1、與(&)全1則1,否則為0
2、或(|)全0則0,否則為1
3、異或(^)相同為0,不同為1。
4、取反 (!)遇1則0,遇0則1
2.2、邏輯運算
邏輯運算子執行的是短路求值,當左邊運算元可以推斷出表示式的值,就不再執行 了
public static void main(string args)
// 位操作運算不管值是如何,任何參與運算的表示式都會被執行求值
int a, b = 10;
if (((a = 0) == 0) | ((b = 20) == 20))
}
1、邏輯與(&&)
全真則真
2、邏輯或(||)
全假則假
3、邏輯非(!)
真假互換
邏輯運算和位運算
本文主要針對的是邏輯運算 和位運算 關於移位預算,現在對開發來說基本不用,就不說了。邏輯運算主要是針對多個boolean表示式來說的,即a 1 b 2這種,就是說邏輯運算子左右都是boolean型別的表示式,這裡!是個特例,它是一元運算子,只對右邊boolean表示式取反,即!ture 變成了fal...
位運算和邏輯運算
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...
邏輯運算 位運算
今天有人問我,邏輯運算是什麼,現在來解釋一下 邏輯運算就是相當於資訊競賽基礎工具中的一位的位運算 符號對應關係 wedge cap 交 and 與運算 vee cup 並 or 或運算 neg not 非 xor 異或運算 x k 將x的二進位制右移k位 如 x 10110 2 時,k 1,那麼x ...