if
((tab = table)
== null ||
(n = tab.length)==0
) n =
(tab =
resize()
).length;if(
(p = tab[i =
(n -1)
& hash]
)== null)
tab[i]
=newnode
(hash, key, value, null)
;
/**
* the default initial capacity - must be a power of two.
*/static
final
int default_initial_capacity =
1<<4;
// aka 16
對於乙個數k要除以2的n次方,也就是相當於把k向右移n位,而被移出去的n位即正好是我們要求是餘數。
2的二進位制減1是 0001
4的二進位制減1是 0011
8的二進位制減1是 0111
16的二進位制減1是 1111
...
1的個數就是移出去的位數
11%4
=3=11
& (4-1)
=1011
& (0100
-1)//用二進位制表示
=1011
&0011
=0011
=3
11
>>2=
1001
>>2=
10|11=
2 餘 3
取餘與位運算
在c風格語言中 比如c,c c 注 排名按出生日期 取餘運算子定義為 但在很久很久以前,cpu採用如下方法計算餘數 注意,該方法 只對2的n次方數系有效 x 2 n 1 首先從求餘數談起,我們知道,計算機中儲存的方式是0和1序列 1 0001 2 0 2 0010 2 1 3 0011 2 1 1 ...
取餘與位運算
在c風格語言中 比如c,c c 注 排名按出生日期 取餘運算子定義為 但在很久很久以前,cpu採用如下方法計算餘數 注意,該方法只對2的n次方數系有效 x 2 n 1 首先從求餘數談起,我們知道,計算機中儲存的方式是0和1序列 1 0001 2 0 2 0010 2 1 3 0011 2 1 1 4...
取餘與位運算
在c風格語言中 比如c,c c 注 排名按出生日期 取餘運算子定義為 但在很久很久以前,cpu採用如下方法計算餘數 注意,該方法只對2的n次方數系有效 x 2 n 1 首先從求餘數談起,我們知道,計算機中儲存的方式是0和1序列 1 0001 2 0 2 0010 2 1 3 0011 2 1 1 4...