位運算和邏輯運算

2022-07-03 10:24:11 字數 1542 閱讀 8104

正數負數

原碼符號位為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 ...