您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java如何實(shí)現(xiàn)位運(yùn)算,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
public class Operation5 { public static void main(String[] args) { //位運(yùn)算 /* 包括: 與 &, 或 |, 取反 ~, 異或 ^ 帶符號(hào)左移<<, 帶符號(hào)右移 >>, 無符號(hào)右移 >>> 1. & 就是二進(jìn)制位如果都是1則為1,否則為0 2. | 就是二進(jìn)制位如果都是0則為0,否則為1 3. ~ 就是二進(jìn)制位如果是0取反變成1,否則如果是1取反變成0; 4. ^ 就是運(yùn)算兩邊二進(jìn)制位兩邊同時(shí)相等時(shí)為0,否則為1 5. <<就是將二進(jìn)制位逐位向左移動(dòng)n位,后面補(bǔ)n個(gè)0,相當(dāng)于乘2; 6. >>就是將二進(jìn)制位逐位向右移動(dòng)n位,前面補(bǔ)n個(gè)符號(hào)位,向當(dāng)于除2; 6. >>>就是將二進(jìn)制位逐位向右移動(dòng)n位,前面補(bǔ)n個(gè)0 */ byte a = 1; //二進(jìn)制 00000001 byte b = 8; //二進(jìn)制 00001000 byte c = 127; //二進(jìn)制 01111111 byte d = -127;//二進(jìn)制 10000001 System.out.println(a & b); //結(jié)果 00000000 System.out.println(a | b); //結(jié)果 00001001 2^3+2^0=9 System.out.println(~a); //結(jié)果 11111110補(bǔ)碼 轉(zhuǎn)換為原碼=10000001=-1-1=-2 System.out.println(a ^ b); //結(jié)果 00001001 =9; System.out.println(a << 1); //結(jié)果 00000010 2^1=2 System.out.println(c << 1); //結(jié)果 11111110 =254 System.out.println(a >> 1); //結(jié)果 00000000 =0 System.out.println(c >> 1); //結(jié)果 00111111 =63 System.out.println(d >> 1); //結(jié)果 11000000補(bǔ)碼 原碼=10111111=-63-1=-64 System.out.println(d >>> 1);//結(jié)果 01000000原碼 /* 注意: 1.計(jì)算機(jī)存儲(chǔ)時(shí) 二進(jìn)制第一位是表示符號(hào)位 1 代表負(fù)數(shù), 0代表正數(shù) 2.計(jì)算機(jī)存儲(chǔ)時(shí)以補(bǔ)碼的方式存儲(chǔ)的, 正數(shù)的補(bǔ)碼跟原碼一樣,負(fù)數(shù)的補(bǔ)碼是去掉第一位符號(hào)位取反然計(jì)算結(jié)果后 再 + 1 得到的. 3. 那補(bǔ)碼轉(zhuǎn)換成原碼就反過來 去掉第一位取反計(jì)算結(jié)果后 再-1. 4. System.out.println 沒有 System.out.println(byte b)方法,計(jì)算機(jī)先自動(dòng)將byte轉(zhuǎn)化成 int 然后在移動(dòng) */ } }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Java如何實(shí)現(xiàn)位運(yùn)算”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。