java取二进制其中两位_Java:二进制(原码、反码、补码)与位运算(示例代码)...
一、二進(jìn)制(原碼、反碼、補(bǔ)碼)
二進(jìn)制的最高位是符號(hào)位(“0”代表正數(shù),“1”代表負(fù)數(shù));
Java中沒有無符號(hào)數(shù);
計(jì)算機(jī)以整數(shù)的補(bǔ)碼進(jìn)行運(yùn)算;
1.? 原碼:將一個(gè)整數(shù)轉(zhuǎn)換成二進(jìn)制表示
以 int 類型為例,int類型占4個(gè)字節(jié)、共32位。
例如,2 的原碼為:00000000 00000000 00000000 00000010
-2的原碼為:10000000 00000000 00000000 00000010
2. 反碼
正數(shù)的反碼:與原碼相同
負(fù)數(shù)的反碼:原碼的符號(hào)位不變,其他位取反
例如,-2 的反碼為:11111111 11111111 11111111 11111101
3. 補(bǔ)碼
正數(shù)的補(bǔ)碼:與原碼相同
負(fù)數(shù)的補(bǔ)碼:反碼+1
例如,-2 的補(bǔ)碼為:01111111 11111111 11111111 11111110
二、位運(yùn)算
Java中有4個(gè)位運(yùn)算符:
1. 按位與 &:兩位都為1,結(jié)果為1
例如,2&3 = 2
2? 的原碼為: 00000000 00000000 00000000 00000010
3? 的原碼為: 00000000 00000000 00000000 00000011
2&3 原碼為: 00000000 00000000 00000000 00000010 = 2
2. 按位或 |:至少一位為1,結(jié)果為1
例如,2|3 = 3
2? 的原碼為: 00000000 00000000 00000000 00000010
3? 的原碼為: 00000000 00000000 00000000 00000011
2|3? ?原碼為: 00000000 00000000 00000000 00000011 = 3
3. 按位異或 ^:兩位一個(gè)為1、一個(gè)為0,結(jié)果為1
例如,2|3 = 3
2? 的原碼為: 00000000 00000000 00000000 00000010
3? 的原碼為: 00000000 00000000 00000000 00000011
2^3 原碼為: 00000000 00000000 00000000 00000001 = 1
4. 按位取反 ~:0變成1、1變成0
例如,~2 = -3
對(duì)2的原碼取反:11111111 11111111 11111111 11111101? (取反后結(jié)果的補(bǔ)碼,也就是-3的補(bǔ)碼。我們需要從補(bǔ)碼推出原碼,才能得到-3)
轉(zhuǎn)換成反碼:? ? 11111111 11111111 11111111 11111100 (補(bǔ)碼減1)
轉(zhuǎn)換成原碼:? ? 10000000 00000000 00000000 00000011 =-3 (符號(hào)為不變,其他位取反)
總結(jié)
正數(shù)的原碼、反碼、補(bǔ)碼都一樣;
負(fù)數(shù)的反碼 = 原碼的符號(hào)位不變,其他位取反;
負(fù)數(shù)的補(bǔ)碼 = 反碼+1;
0的原碼、反碼、補(bǔ)碼都是0;
計(jì)算機(jī)以補(bǔ)碼進(jìn)行運(yùn)算;
取反不同于反碼;
2018-01-06?18:38:29
總結(jié)
以上是生活随笔為你收集整理的java取二进制其中两位_Java:二进制(原码、反码、补码)与位运算(示例代码)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: t3出行如何取消订单
- 下一篇: Java更改中文_Java中文编程开发,