knowledge base
This property is why the expression n & (n - 1) == 0
For n=21=2n = 2^1 = 2n=21=2, binary:
0010
→ n−1=1n-1 = 1n−1=1, binary:0001
For n=22=4n = 2^2 = 4n=22=4, binary:
0100
→ n−1=3n-1 = 3n−1=3, binary:0011
For n=23=8n = 2^3 = 8n=23=8, binary:
1000
→ n−1=7n-1 = 7n−1=7, binary:0111
数字转换
在计算机领域,单位的换算分为以 10 为底和以 2 为底的两种常用方式。以下是常见的单位及其对应的换算关系,以及在十进制和二进制中的计算方法:
1. 以 10 为底的单位(国际标准单位,SI 进制)
KB
Kilobyte
(1 , KB = 10^3 , bytes = 1,000 , bytes)
One thousand (1 thousand)
MB
Megabyte
(1 , MB = 10^6 , bytes = 1,000,000 , bytes)
One million (1 million)
GB
Gigabyte
(1 , GB = 10^9 , bytes = 1,000,000,000 , bytes)
One billion (1 billion)
TB
Terabyte
(1 , TB = 10^{12} , bytes = 1,000,000,000,000 , bytes)
One trillion (1 trillion)
PB
Petabyte
(1 , PB = 10^{15} , bytes = 1,000,000,000,000,000 , bytes)
One quadrillion (1 quadrillion)
2. 以 2 为底的单位(计算机传统,二进制进制)
KiB
Kibibyte
(1 , KiB = 2^{10} , bytes = 1,024 , bytes)
One thousand and twenty-four
MiB
Mebibyte
(1 , MiB = 2^{20} , bytes = 1,048,576 , bytes)
One million and forty-eight thousand five hundred seventy-six
GiB
Gibibyte
(1 , GiB = 2^{30} , bytes = 1,073,741,824 , bytes)
One billion and seventy-three million seven hundred forty-one thousand eight hundred twenty-four
TiB
Tebibyte
(1 , TiB = 2^{40} , bytes = 1,099,511,627,776 , bytes)
One trillion and ninety-nine billion five hundred eleven million six hundred twenty-seven thousand seven hundred seventy-six
PiB
Pebibyte
(1 , PiB = 2^{50} , bytes = 1,125,899,906,842,624 , bytes)
One quadrillion one hundred twenty-five trillion eight hundred ninety-nine billion nine hundred six million eight hundred forty-two thousand six hundred twenty-four
对应的英文数字表达
(10^3 = 1,000) - Thousand
(10^6 = 1,000,000) - Million
(10^9 = 1,000,000,000) - Billion
(10^{12} = 1,000,000,000,000) - Trillion
(10^{15} = 1,000,000,000,000,000) - Quadrillion
而在二进制单位中:
(2^{10} = 1,024)
(2^{20} = 1,048,576)
(2^{30} = 1,073,741,824)
(2^{40} = 1,099,511,627,776)
(2^{50} = 1,125,899,906,842,624)
因此,以 2 为底的单位常用于表示更精确的内存容量和数据传输,而以 10 为底的单位常用于硬盘容量、网络流量等领域。
成环问题
数组扩充成2倍遍历,就模拟了成环遍历,结果只取数组原长度。
无需真的扩充数组,直接for 循环2倍数组长度, i = i mod (len(arr))
Last updated
Was this helpful?