成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

java學(xué)習(xí)筆記-位運算

galaxy_robot / 3155人閱讀

摘要:位運算符位運算符與邏輯運算符類似,但是位運算符是對每一位進(jìn)行計算。上面說到的按位取反加,就可以寫成移位運算符右移與無符號右移相似,是將整數(shù)所有的位向右移動位,拋棄個低位??粘鰜淼牡臀挥玫淖罡呶恢笛a(bǔ)全。

定點數(shù)據(jù)再計算機(jī)中的表示方法

例如一個整數(shù)類型(int)的數(shù)據(jù)在內(nèi)存中占用了32位。通俗的講就是在內(nèi)存中挖了32個坑,每一個坑里可以放一個0或者1.

00000000 11111111 00000000 11111111

32個坑,每一個坑有兩種可能,那么總共就是2^32種可能。
整數(shù)既有正整數(shù),又有負(fù)整數(shù),還有一個零,那么分2^32分一半的可能(2^31)給負(fù)整數(shù),分一種可能給0,還剩下2^31-1種可能給整整數(shù)。
這就是為啥整數(shù)類型(int)只能表示-2^31~2^31-1數(shù)值范圍的整數(shù)了。

我們知道整數(shù)類型(int)中,正整數(shù)就可以標(biāo)示成:

00000000 00000000 00000000 00000000   =>表示整數(shù)0;
00000000 00000000 00000000 00000001   =>表示整數(shù)1;
00000000 00000000 00000000 00000010   =>表示整數(shù)2;
....
00000000 00000000 11111111 11111111   =>表示整數(shù)2^31-1

那么負(fù)整數(shù)就可以標(biāo)示成:

11111111 11111111 11111111 11111111  =>標(biāo)示整數(shù)-1;
11111111 11111111 11111111 11111110  =>表示整數(shù)-2;
11111111 11111111 11111111 11111101  =>表示整數(shù)-3;
...
11111111 11111111 00000000 00000001  =>表示整數(shù)-2^31-1
11111111 11111111 00000000 00000000  =>表示整數(shù)-2^31

看到這里,像我一樣聰明的小伙伴肯定可以看出正整數(shù)和其對應(yīng)的負(fù)整數(shù)之間的關(guān)系:媽蛋,它們就是把正整數(shù)所有的0變成1,把1變成0,然后在加上1.
把正整數(shù)所有的0變成1,把1變成0,然后在加上1這是通俗的叫法,其實術(shù)語叫按位取反。

位運算符&, |, ~, ^

位運算符與邏輯運算符類似,但是位運算符是對每一位進(jìn)行計算。

op1[i] op2[i] op1[i]&op2[i] op1[i] | op2[i] op1[i]^op2[i] ~op1[i]
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 1 0

上面說到的按位取反加1,就可以寫成:

     System.out.print(~10+1); //-10
移位運算符 >>, >>>, <<

右移>>與無符號右移>>>相似,
op1>>op2 是將整數(shù)op1所有的位向右移動op2位,拋棄op2個低位??粘鰜淼母呶挥胦p1的最高位值補(bǔ)全。

op1>>>op2 是將整數(shù)op1所有的位向右移動op2位,拋棄op2個低位??粘鰜淼母呶挥?的最高位值補(bǔ)全。

op1<

沒有<<<哦,親~~~

按位異或運算的性質(zhì)
(a^b)^a = b

我們來取a和b的第i位剖析一下,a,b 總共四種可能:

a[i] b[i] a^b[i] a^b[i]
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 1

可以發(fā)現(xiàn)(a^b)^a與a的值是一樣的。
所以如果我們這么寫的話:

a = a^b;
b = a^b; //b = (a^b)^b = a
a = a^b; // a = (a^b)^a = b

就能實現(xiàn)a、b交換數(shù)值。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66374.html

相關(guān)文章

  • Java各種數(shù)據(jù)類型,自己學(xué)習(xí)寫的筆記!?。?/b>

    摘要:局部變量聲明在函數(shù)內(nèi)部的變量。在作用域范圍內(nèi)不能出現(xiàn)命名沖突。 java編程規(guī)范: 1.良好的標(biāo)識符的命名 保留字不能作為標(biāo)識符命名: class、public、static..., goto,const 區(qū)分大小寫:helloWorld、HelloWorld 2.良好的注釋習(xí)慣 3.良好的縮進(jìn):沒遇到一個代碼塊縮進(jìn)一次(一個tab鍵) 變量:代...

    stefanieliang 評論0 收藏0
  • java學(xué)習(xí)筆記- 運算

    摘要:中的運算符按功能劃分主要分類。算術(shù)運算符的優(yōu)先級浮點數(shù)比較在中,一般不建議直接比較兩個浮點數(shù)是否相等。還有與二元運算符相結(jié)合的賦值運算符。與二元運算符相結(jié)合的賦值運算符有其運算即為先兩者進(jìn)行二元操作再賦值給前者。 java中的運算符按功能劃分主要分7類。 算術(shù)運算符 +, -, *, /, ++, --, % 關(guān)系運算符 =, ==, != 布爾邏輯運算符 &&, &, |...

    JellyBool 評論0 收藏0
  • java程序員的c語言學(xué)習(xí)筆記,一文快速了解

    摘要:結(jié)構(gòu)體也可以包含結(jié)構(gòu)體,就像內(nèi)部類訪問結(jié)構(gòu)的屬性和一樣。。我覺得這個需要學(xué)下數(shù)據(jù)結(jié)構(gòu)才能更好理解給數(shù)據(jù)類型起一個新名字則可以通過對于結(jié)構(gòu)體我可以這樣再通過變量名就可以簡便的聲明結(jié)構(gòu)體變量。文件暫時過了一遍預(yù)處理器頭文件就是擴(kuò)展名為的文件。 ...

    FuisonDesign 評論0 收藏0
  • Java學(xué)習(xí)筆記2-基本數(shù)據(jù)類型

    摘要:對象數(shù)組都是引用數(shù)據(jù)類型。低高數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則不能對類型進(jìn)行類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的。聲明變量的基本格式如下格式說明為數(shù)據(jù)類型。但為了對類的使用者可見,大多數(shù)靜態(tài)變量聲明為類型。 變量就是申請內(nèi)存來存儲值。也就是說,當(dāng)創(chuàng)建變量的時候,需要在內(nèi)存中申請空間。 內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲空間,分配的空間只能用來儲存該類型數(shù)據(jù)。 因此,...

    ThinkSNS 評論0 收藏0
  • Java核心技術(shù)筆記 語言基礎(chǔ)

    摘要:變量聲明變量變量名規(guī)則字母開頭,由字母或數(shù)字構(gòu)成的序列,中的字母包括或者某種語言中代表字母的任何字符,數(shù)字包括或者某種語言中代表數(shù)字的任何字符。刪除原始字符串頭部和尾部空格。中斷控制流程,使用在和循環(huán)中,用于提前中斷循環(huán)。 《Java核心技術(shù) 卷Ⅰ》 第3章 Java 的基本程序設(shè)計結(jié)構(gòu) 一些規(guī)則 類命名:CamelCase 駝峰命名法,以及必須是字母開頭,后面跟字母和數(shù)字的任意組合...

    lindroid 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<