位元運算子- Java備忘筆記 - GitBook
文章推薦指數: 80 %
我們知道資料在記憶體中都是以0/1的方式儲存,如果想直接對這些位元做運算,Java提供了一些位元運算子供設計師使用。
Operator運算子. 描述. 範例(令a, b為數值).
JJJava備忘筆記Search…JJJava備忘筆記IntroductionJava特性如何開始編譯並執行console編譯並執行Eclipse作者介紹BasicObject-OrientedBasicJavaProgramming第一支Java程式變數資料型態運算子指定、算數、單元運算子關係、條件運算子三元、型態比對運算子位元運算子表達式、敘述、程式區塊流程控制靜態成員static內部類別套件、載入存取修飾子標準輸入ScannerObjectOrientedProgrammingPoweredByGitBook位元運算子了解位元運算子(&|^)與位移運算子(<<>>>>>)的基本使用。
位元運算子我們知道資料在記憶體中都是以0/1的方式儲存,如果想直接對這些位元做運算,Java提供了一些位元運算子供設計師使用。
Operator運算子描述範例(令a,b為數值)~位元補數(complement)運算~a&位元和(and)運算a&b|位元或(or)運算a|b^位元互斥或(exclusiveor)運算a^b補數complement(~):補數的意思就是1變0,0變1,反向的感覺。
範例程式:1inta=45;2System.out.println(a);3a=~a;4System.out.println(a);Copied!執行結果:145//000000000000000000000000001011012-46//11111111111111111111111111010010Copied!和and(&):和運算,是二元運算,只有兩個都為1,結果才是1。
範例程式:1inta=45;2intb=25;3System.out.println(a&b);Copied!執行結果:1//a=000000000000000000000000001011012//b=0000000000000000000000000001100139//00000000000000000000000000001001Copied!AND真值表:&10110000或or(|):或運算,是二元運算,只要有一個1,結果就是1。
範例程式:1inta=45;2intb=25;3System.out.println(a|b);Copied!執行結果:1//a=000000000000000000000000001011012//b=00000000000000000000000000011001361//00000000000000000000000000111101Copied!OR真值表:|10111010互斥或exclusiveor(^):互斥或,英文縮寫常稱『XOR』,是二元運算子,位元不同為1。
程式範例:1inta=45;2intb=25;3System.out.println(a^b);Copied!執行結果;1//a=000000000000000000000000001011012//b=00000000000000000000000000011001352//00000000000000000000000000110100Copied!XOR真值表:^10101010位移運算子BitShiftOperators位移運算子的目的是向左或向右移動目標運算元的每個位元。
Operator運算子描述範例(令a,b為數值)<>保留正負號的右移運算a>>b(將a逐位元右移b個單位)>>>右移運算a>>>b範例程式:1inta=16;2intb=2;3System.out.println(a<>b);5System.out.println(a>>>b);Copied!執行結果:1//a=00000000000000000000000000010000264//0000000000000000000000000100000034//0000000000000000000000000000010044//00000000000000000000000000000100Copied!範例程式2(負號測試):1inta=-16;2intb=2;3System.out.println(a<>b);5System.out.println(a>>>b);Copied!執行結果:1//a=111111111111111111111111111100002-64//111111111111111111111111110000003-4//1111111111111111111111111111110041073741820//00111111111111111111111111111100Copied!(無號右移>>>,不會理會當前的符號位元,直接右移補0上去)※利用位元位移運算子,可以達到最快的*2或/2運算。
嘛,因為根本沒做到數學運算,而乘法跟除法在計算上是很廢時的。
範例程式:1inta=3;2System.out.println(a*2*2*2*2*2);3System.out.println(a<<5);45intb=20000;6System.out.println(b/2/2/2/2/2);7System.out.println(b>>5);Copied!執行結果:19629636254625Copied!Previous三元、型態比對運算子Next表達式、敘述、程式區塊Lastmodified1yragoCopylinkContents位元運算子補數complement(~):和and(&):或or(|):互斥或exclusiveor(^):位移運算子BitShiftOperators※利用位元位移運算子,可以達到最快的*2或/2運算。
延伸文章資訊
- 1C 程式語言-位元運算的介紹(richwang)
因此可以這樣用:byte value; 等同於unsigned char value;. Page 2. C 程式語言-位元運算的介紹(richwang). (*) 位元的運算. C 語言中與位...
- 2位元運算- 維基百科,自由的百科全書
位元運算是程式設計中對位元型樣或二進位數的一元和二元操作。在許多古老的微處理器上,位元運算比加減運算略快,通常位元運算比乘除法運算要快很多。
- 3邏輯運算、位元運算
在位元運算上,C 還有左移( << )與右移( >> )兩個運算子,左移運算子會將所有的位元往左移指定的位數,左邊被擠出去的位元會被丟棄,而右邊會補上0;右移運算則是相反 ...
- 4位元運算子- Java備忘筆記 - GitBook
我們知道資料在記憶體中都是以0/1的方式儲存,如果想直接對這些位元做運算,Java提供了一些位元運算子供設計師使用。 Operator運算子. 描述. 範例(令a, b為數值).
- 5位元運算子& AND, | OR, ^ XOR, ~ NOT @ 程式手扎 - 隨意窩
邏輯運算子電路中最基本的邏輯運算子如下所列,可說是工程人員都耳熟能詳地,假設有A 和B 兩個bit,即它們的值只有0 和1 兩種,那麼A AND B 只有在兩者皆為1 的時候才 ...