Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android從零開發之java-二進制

Android從零開發之java-二進制

編輯:關於Android編程

[java]   package test;   /*   * 作者:鐘志鋼   * 內容:二進制(原碼,反碼與補碼),位算符,移位運算   * 時間: 2013-1-23 www.2cto.com  * 1. >> 算術右移 ,符號位不變,低位溢出,並用符號位補缺少高位   *       << 算術左移 , 符號位不變,低位補零   *      >>> 邏輯右移, 低位溢出,高位補0   * 2,位運算:~1,  按位取反 ,(0-->1, 1-->0)   *          -3^3   按位異或,一個為0, 一個為1,則為1;   *          1&3 , 按位與,兩位全為1.則結果為1;   *          1|3 , 按位或, 兩位有一個為1, 則為1;   * 3,二進制反補碼規則:對於有符號的而言;   *      1,最高位是符號符號位,0是正,1為負。   *      2,正數或0的原碼,反碼與補碼都一樣。   *      3,負數的反碼=它的原碼符號位不變,其它取反(0-->1, 1-->0)   *      4,負數的補碼=反碼 + 1;   *      5, java中沒有無符號數,即java中的數都是有符號數   *      6, 計算機運算時都是以補碼的方式運算的;   *    *    *    */   public class 二進制 {          /**       * @param args       */       public static void main(String[] args) {           二進制 er = new 二進制();          }       public 二進制 (){           //移位運算           byte a = 1 >> 2;//低位溢出,並用符號位補缺少高位           //1 --> 00000001 -補碼-> 00000001 -移位-> 00000000.01 --> 00000000 = 0           byte aa = 8 >> 2;//低位溢出,並用符號位補缺少高位           //8 --> 00001000 -補碼-> 00001000 -移位-> 00000010.00 --> 00000010 = 2=8開平方           byte b = -1 >> 2;           //-1 --> 10000001 -補碼-> 11111111 -移位-> 11111111.11 -補碼-> 10000001 = -1           byte c = 1 << 2;//高位溢出,0補低位           //1 --> 00000001 -補碼-> 00000001 -移位-> 00000100 --> 4 = 2平方           byte d = -1 << 2;           //-1 --> 10000001 -補碼-> 11111111 -移位-> 11111100 -補碼-> 10000100 = -4           byte e = 3 >>> 2;//低位溢出,高位補0           //3--> 00000011 -邏輯移位-> 00000000,11--> 00000000=0            int ee = -3 >>> 2;//低位溢出,高位補0           //3--> 1000-24個0-0011 -->111-24個1-11101-邏輯移位-> 0011-24個1-1111,01--> 0011-24個1-1111            System.out.println("a(1 >> 2)= " + a);           System.out.println("b(-1 >> 2)= " + b);           System.out.println("c(1 << 2)= " + c);           System.out.println("d(-1 << 2)= " + d);           System.out.println("e(3 >>> 2)= " + e);           System.out.println("ee(-3 >>> 2)= " + (-3 >>> 2));           //二進制計算過程           byte f = 1;           byte g = 2;           /*f = 00000001;//byte為一個字節,八位           *g = 00000010           *f - g --> f + (-g)           *-g = 10000010           *首先對g取反為:11111101           *再取補碼:       11111110           *f的反碼為本身00000001           *f - g =     11111111           *再取反回來:  10000000 --> 10000001           *即 f - g = -1           */                      //位運算:           byte h = ~2;           //2 --> 00000010 -取反-> 11111101 -補到原先取反-> 10000010 -再加1-> 10000011 --> 3           byte i = 2 & 3 ;//兩個為1則為1,否則為0           //2 --> 00000010, 3 --> 00000011; 2 & 3 = 00000010 --> 2           byte j = 2 | 3;//只要有一個為1就為1,否則為0           //2 --> 00000010, 3 --> 00000011; 2 | 3 = 00000011 --> 3           byte k = ~-5;           //-5--> 10000101 -補碼-> 11111011-取反-> 00000100 -補碼-> 00000100 --> 4           byte l = 13 & 7 ;           byte m = 5 | 4;           byte n = -3 ^ 3;//不同則為1,相同則為0           //-3 --> 10000011 -補碼-> 11111101,3-->00000011,-3^3-->11111110-補碼->10000010 = -2           System.out.println("h(~2)= " +h);           System.out.println("i(2 & 3)= " +i);           System.out.println("j(2 | 3)= " +j);           System.out.println("k(~-5)= " +k);           System.out.println("l(13 & 7)= " +l);           System.out.println("m(5 | 4)= " +m);           System.out.println("n(-3 ^ 3)= " +n);       }   }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved