二進制常用運算
簡介:
邏輯變量之間的運算稱為
邏輯運算。
二進制數1和0在邏輯上可以代表“真”與“假”、“是”與“否”、“有”與“無”。這種具有邏輯屬性的變量就稱為
邏輯變量。 計算機的邏輯運算的
算術運算的主要區別是:邏輯運算是按位進行的,位與位之間不像加減運算那樣有進位或借位的聯系。
詳細介紹:
1.按位與&
兩位全為1,結果才為1. 例:0&1=0 1&1=1
作用:
1.清零
2.取一個數中指定數: 例:X=10101110 取X得低四位。 X&00001111=0000 1110
2.按位或 |
只要有一個位1,結果就位1.
作用:常用來對一個數據的某些位 置1. 例:X=00001001 使X低四位為1 X|0000 1111=00001111
3.異或運算^
兩個相應位為"異"(值不同),則該位結果為1,否則為0.
作用:1.使特定位翻轉,找一個數,對應X要翻轉的各位,該數的對應位為1,其余位為0,此數與X對應位 異或即可。
例:X=10101110 使X低四位翻轉
X^0000 1111=10100001
2.與0相異或,保留自身原值。(應用在兩個變量交換值,效率最高)
例:A=A^B,B=A^B,A=A^B 這樣A和B的值就交換了。
4.取反運算~
對一個二進制數按位取反。~0=1
例:在java中對有符號int型數取反運算。
注:在java中有符號整數都是用補碼表示的。
所以我們還需要了解補碼的知識:
原碼:一個整數按照絕對值大小轉換成的二進制數稱為原碼。
反碼:
1.正數的反碼與其原碼相同;
2.負數的反碼是對其原碼逐位取反,但符號位除外。
原碼10010= 反碼11101 (10010,1為符號碼,故為負)
(11101) 二進制= -2 十進制
補碼:
補碼表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
取反方法:1.對正數:先對其表示的二進制取反,得到負數的補碼;然后求出反碼,最后求出原碼。(即為所求數)
例:~3
java中int類型的長度是四個字節,也就是32位,so:
00000000 00000000 00000000 00000011
取反: 1... 11111100 最高位為1,所以這是負數的補碼形式。
求出反碼: 1... 11111011
求出原碼: 0... 00000100 數字為4
之前此數的補碼最高位為1,所以 ~3=-4
2.對負數:先求負數的補碼,然后直接取反。(注意最高位1代表負數,0代表整數)。
此篇為復習基礎知識所寫。