java Integer中的方法解析(位操作)

sayWhat_sayHello發表於2018-08-23
方法 描述
static int bitCount(int i) 返回i的二進位制中1的個數.
static int compare(int x, int y) 比較兩個int型別的值
int compareTo(Integer anotherInteger) 比較兩個Integer型別的值
static int compareUnsigned(int x, int y) 比較兩個無符號int型別的值
static Integer decode(String nm) 將string編碼成integer
static Integer getInteger(String nm, Integer val) 獲取系統屬性裡的數字
static int highestOneBit(int i) 看錶格下面的註釋
static int lowestOneBit(int i) 看錶格下面的註釋
static int max(int a, int b) 獲取最大值,內部呼叫Math.max()比較;
static int min(int a, int b) 獲取最小值,內部呼叫Math.min()比較;
static int numberOfLeadingZeros(int i) 二進位制i頭部1前有多少個0
static int numberOfTrailingZeros(int i) 二進位制i尾部1後有多少個0
static int parseInt(String s) 以十進位制解析帶符號的字串s為int型別
static int parseInt(String s, int radix) 以radix進位制解析帶符號的字串s為int型別
static int parseUnsignedInt(String s)
static int parseUnsignedInt(String s, int radix)
static int reverse(int i) 反轉i的二進位制順序返回相應的十進位制數
static int reverseBytes(int i) 按位元組(8位)反轉返回相應的十進位制數
static int rotateLeft(int i, int distance) 左移
static int rotateRight(int i, int distance) 右移
static int signum(int i) i為正數返回1,0返回0,負數返回-1
static int sum(int a, int b)
static String toBinaryString(int i) 將數變為2機制返回
static String toHexString(int i) 將數變為16機制返回
static String toOctalString(int i) 將數變為8機制返回
static long toUnsignedLong(int x) 轉為無符號的long型別
static String toUnsignedString(int i)
static String toUnsignedString(int i, int radix)
static Integer valueOf(int i) int型別轉為Integer
static Integer valueOf(String s) String型別轉為Integer
static Integer valueOf(String s, int radix) String型別以radix進位制轉為Integer

highestOneBit(int i)

若i為正整數,例如i=9,其二進位制為1001,最高位1的權值為8,則返回值為8
若i為負整數,最高位1為符號位,返回值為-2147483648
若i為零,返回值為0

lowestOneBit(int i)

若i非零,返回值為最低位1的權值
若i為零,返回值為0
System.out.println(Integer.bitCount(15));//4
System.out.println(Integer.bitCount(24));//2
System.out.println(Integer.highestOneBit(15));//8
System.out.println(Integer.toBinaryString(15));//1111
System.out.println(Integer.toBinaryString(Integer.highestOneBit(15)));//1000
System.out.println(Integer.highestOneBit(24));//16
System.out.println(Integer.toBinaryString(24));//11000
System.out.println(Integer.toBinaryString(Integer.highestOneBit(24)));//10000
System.out.println(Integer.highestOneBit(-500));//-2147483648
System.out.println(Integer.lowestOneBit(24));//8
System.out.println(Integer.toBinaryString(24));//11000
System.out.println(Integer.toBinaryString(Integer.lowestOneBit(24)));//1000
System.out.println(Integer.numberOfLeadingZeros(15));//28
System.out.println(Integer.numberOfLeadingZeros(24));//27
System.out.println(Integer.numberOfTrailingZeros(15));//0
System.out.println(Integer.numberOfTrailingZeros(24));//3
System.out.println(Integer.reverse(15));//-268435456
System.out.println(Integer.toBinaryString(Integer.reverse(15)));//11110000000000000000000000000000
System.out.println(Integer.reverseBytes(0xABCDEF01));//32492971
System.out.println(Integer.toHexString(Integer.reverseBytes(0xABCDEF01)));//1efcdab

解析:

1. bitCount():15二進位制為1111,共4位1;24二進位制為11000,共2位1。
2. highestOneBit():保留15二進位制1111最高位1,隨後全部替換為0,即1000,十進位制為8;保留24二進位制11000最高位1,隨後全部替換成0,即10000十進位制為16.負數最高位為1,所以是-2147483648。
3. lowestOneBit():保留24二進位制11000最低位的1,隨後全部替換成0,即1000十進位制為8.
4. numberOfLeadingZeros():整型是32位的二進位制,15二進位制1111前有32-4=28個,24二進位制為11000有32-5=27個
5. numberOfTrailingZeros():15二進位制1111後面沒有0;24二進位制為11000,後面只有3個0.
6. reverse():將二進位制順序倒轉過來,15二進位制1111,倒轉為11110000000000000000000000000000,即-268435456
7. reverseByte():0xABCDEF01 為16進位制數,以位元組為單位即AB_CD_EF_01,倒轉為01_EF_CD_AB,即32492971

相關文章