国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用2的冪表示可多項(xiàng)選擇的狀態(tài)

2019-11-14 12:12:46
字體:
供稿:網(wǎng)友

我們?cè)趯W(xué)習(xí)linux權(quán)限指令時(shí),想必大多數(shù)人都會(huì)疑惑為啥用1,2,4來表x,w,r的權(quán)限,而不是1,2,3就行了。 實(shí)際工作中,我們也經(jīng)常需要用到各種組合的狀態(tài),類似權(quán)限,每個(gè)權(quán)限并不唯一只有x,w,r,而是x,w,r任意組合。所以我們就需要任意組合的數(shù)字不重復(fù)。用2的冪就可以達(dá)成這樣的效果。用1,2,3的話,比如x和w(1+2=3),就與r重復(fù)了。

除了以上任意組合的唯一性外,還有個(gè)好處,就是代碼可以很好的用到位運(yùn)算,顯得有效率且簡(jiǎn)潔

比如java nio 的 SelectionKey

public static final int OP_READ = 1 << 0; public static final int OP_WRITE = 1 << 2; public static final int OP_CONNECT = 1 << 3; public static final int OP_ACCEPT = 1 << 4;

當(dāng)表示多個(gè)組合的時(shí)候,用|

int interestSet = SelectionKey.OP_READ | SelectionKey.OP_WRITE;

當(dāng)判斷是否含有某種狀態(tài)時(shí)

public final boolean isReadable() { return (readyOps() & OP_READ) != 0; }

關(guān)于2的冪

由于計(jì)算機(jī)的識(shí)別是二進(jìn)制的,所以2的冪在項(xiàng)目源碼中非常常見。 比如hashmap的數(shù)組長度,就是2的冪,有兩個(gè)原因。 1、2^n & hash = hash % 2^n, 這個(gè)是在求key所在的數(shù)組位置。只有2的冪,該等式才相等。在源碼里基本都是位運(yùn)算的,效率更好。 2、 2^n 散列的效果是好于其他的。(在其他文章看到的,有例子)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金湖县| 庐江县| 安康市| 黎城县| 苍溪县| 洪湖市| 贡嘎县| 延川县| 民权县| 巴马| 平原县| 丰原市| 金山区| 本溪| 吴川市| 贵阳市| 禄丰县| 施甸县| 宣威市| 象山县| 高邮市| 和平区| 临夏市| 新巴尔虎右旗| 界首市| 克什克腾旗| 延津县| 京山县| 壶关县| 库伦旗| 当阳市| 泸州市| 库尔勒市| 茂名市| 云龙县| 蕉岭县| 探索| 化德县| 古丈县| 普陀区| 洪江市|