国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中的按位與(&)用法說明

java中的按位與(&)用法說明

2020-08-18 00:32ThinkPet Java教程

這篇文章主要介紹了java中的按位與(&)用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

為什么4&7結果是4

4 的二進制值是 100,7 的二進制值是 111(實際上 Java 在存儲兩個數到內存時會自動在有效值 100 和 111 之前補 29 個零來達到整數類型的 4 byte 大小,此處為了方便展示就不補全前面的一串零了),

& 是將兩數進行位與位的 and 操作(0 & 1 = 0,1 & 1 = 1),所以操作步驟就是

java" id="highlighter_683498">
?
1
2
3
4
5
4: 1 0 0
  & & &
7: 1 1 1
----------
 = 1 0 0

可見最后得出的結果是一個二進制整數 100,也就是十進制的 4

按位與運算符(&)

參加運算的兩個數據,按二進制位進行“與”運算。

運算規則:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:兩位同時為“1”,結果才為“1”,否則為0

例如:3&5 即 0000 0011& 0000 0101 = 00000001 因此,3&5的值得1

補充知識:java運算符 與(&)、非(~)、或(|)、異或(^)

最近看HashMap源碼,遇到了這樣一段代碼:

?
1
2
3
4
static final int hash(Object key) {
  int h;
  return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

于是我整理學習了以下知識:

1.十進制轉二進制

原理:給定的數循環除以2,直到商為0或者1為止。將每一步除的結果的余數記錄下來,然后反過來就得到相應的二進制了。

比如8轉二進制,第一次除以2等于4(余數0),第二次除以2等于2(余數0),第三次除以2等于1(余數0),最后余數1,得到的余數依次是0 0 0 1 ,

反過來就是1000,計算機內部表示數的字節長度是固定的,比如8位,16位,32位。所以在高位補齊,java中字節碼是8位的,所以高位補齊就是00001000.

寫法位(8)10=(00001000)2;

代碼實現:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package sourceCode.hashMap;
 
public class mapHashCodeTest {
  public static void main(String[] args) {
    String str = toBinary(8);
    System.out.println(str);
  }
 
 static String toBinary(int num) {
   String str = "";
   while (num != 0) {
     str = num % 2 + str;
     num = num / 2;
   }
   return str;
 }
}

運行結果:1000

2.二進制轉十進制

計算也很簡單,比如8的二進制表示位00001000,去掉補齊的高位就是1000.此時從個位開始計算2的冪(個位是0,依次往后推)乘以對應位數上的數,然后得到的值想加

于是有了,(2的0次冪)*0+(2的1次冪)*0+(2的2次冪)*0+(2的3次冪)*1 = 8

代碼實現,直接調用Integer.parseInt("",2);

System.out.println(Integer.parseInt("1000",2));

運行結果:8

3.位異或運算(^)

運算規則是:兩個數轉為二進制,然后從高位開始比較,如果相同則為0,不相同則為1。

比如:8^11.

8轉為二進制是1000,11轉為二進制是1011.從高位開始比較得到的是:0011.然后二進制轉為十進制,就是Integer.parseInt("0011",2)=3;

延伸:

4.位與運算符(&)

運算規則:兩個數都轉為二進制,然后從高位開始比較,如果兩個數都為1則為1,否則為0。

比如:129&128.

129轉換成二進制就是10000001,128轉換成二進制就是10000000。從高位開始比較得到,得到10000000,即128.

5.位或運算符(|)

運算規則:兩個數都轉為二進制,然后從高位開始比較,兩個數只要有一個為1則為1,否則就為0。

比如:129|128.

129轉換成二進制就是10000001,128轉換成二進制就是10000000。從高位開始比較得到,得到10000001,即129.

6.位非運算符(~)

運算規則:如果位為0,結果是1,如果位為1,結果是0.

比如:~37

在Java中,所有數據的表示方法都是以補碼的形式表示,如果沒有特殊說明,Java中的數據類型默認是int,int數據類型的長度是8位,一位是四個字節,就是32字節,32bit.

8轉為二進制是100101.

補碼后為: 00000000 00000000 00000000 00100101

取反為: 11111111 11111111 11111111 11011010

因為高位是1,所以原碼為負數,負數的補碼是其絕對值的原碼取反,末尾再加1。

因此,我們可將這個二進制數的補碼進行還原: 首先,末尾減1得反碼:11111111 11111111 11111111 11011001 其次,將各位取反得原碼:

00000000 00000000 00000000 00100110,此時二進制轉原碼為38

所以~37 = -38.

以上這篇java中的按位與(&)用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/ThinkPet/article/details/83546801

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲国产婷婷香蕉久久久久久99 | 亚洲成年人网站在线观看 | 在线国产一区二区 | 日本欧美国产 | 99久久婷婷国产精品综合 | 日日摸夜夜添夜夜添特色大片 | 99精品欧美一区二区蜜桃免费 | 亚洲成人免费网址 | 欧美日韩在线视频免费 | 三级av在线 | 黄视频在线播放 | 一区二区在线免费观看 | 亚洲乱码国产乱码精品精98午夜 | 中文字幕一区二区三区四区五区 | 日韩国产| 在线亚洲精品 | 成人国产精品久久 | 午夜不卡视频 | 丝袜天堂 | 天天爽夜夜爽夜夜爽精品视频 | 国产精品初高中精品久久 | 精品免费国产一区二区三区四区 | 日本成人片网站 | 天天干天天操 | 久久精品99久久 | 91av在线视频观看 | 中文字幕不卡在线观看 | 超碰人人干人人 | 天天亚洲综合 | 欧美日韩一区二区三区在线观看 | 亚洲精品在线看 | 综合中文字幕 | 日本高清无卡码一区二区久久 | 欧美日韩高清 | 欧美中文在线 | 综合久久久 | www,四虎| 欧美另类视频在线 | 国产精品久久久久久久久久 | 精品自拍视频 | 岛国av在线免费观看 |