最近碰到java的BigInteger類,也就是大整數(shù)類,這個(gè)類的功能并不是只有無(wú)限大整數(shù)的功能,它還具有權(quán)限控制的能力。
先給個(gè)網(wǎng)上反復(fù)轉(zhuǎn)載的代碼:
package com.hundsun.network.post.settle.job; import java.math.BigInteger; public class TestBigInteger { public static void main(String[] args) { //初始 BigInteger num = new BigInteger("0"); num = num.setBit(2); num = num.setBit(1); System.out.PRintln(num); System.out.println(num.testBit(2)); System.out.println(num.testBit(1)); System.out.println(num.testBit(3)); } }輸出結(jié)果為
6
true
true
false
首先,實(shí)例化一個(gè)BigInteger對(duì)象,該對(duì)象初始化值為0,然后調(diào)用num.setBit(2)方法,這個(gè)方法的含義按照API解釋,將先把num做一個(gè)二進(jìn)制數(shù)據(jù),然后將二進(jìn)制中的第2位設(shè)置為1,最后返回該數(shù)據(jù)。我們知道0的二進(jìn)制可以寫成00000000,然后將第2位置加上1,也就變成了00000100(注意二進(jìn)制是從第0位開始的),然后在調(diào)用num.setBit(1),把第1位設(shè)置成1,num應(yīng)該等于00000110,所以num對(duì)應(yīng)的十進(jìn)制值為6。其實(shí)num.setBit(n)方法也可看成 num|2^n,“|”是位運(yùn)算符“或”。 現(xiàn)在碰到num.testBit(2)方法,該方法就是就是判斷00000110的第2位是否為1,所以這個(gè)應(yīng)該返回true,類似,num.testBit(1)也返回true,num.testBit(3)因?yàn)榈?位是0,所以返回false。num.testBit(n)可看成num&2^n,“&”是位運(yùn)算符“與”。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注