###### tags: `math` `code` # 用一個整數(key)表示多個整數(a,b,c...) ## 表示兩個整數(a,b) KeyDivisor = 1000 ### 限制 b < 1000 (最大只能999) ### 轉換關係 $key = a \times 1000 + b$ a = key / 1000 b = key % 1000 ## 表示N個整數(a,b,c...) KeyDivisor = 1000 ### 限制 param < 1000 (最大只能999) ### 轉換關係 $key = a \times 1000^{n-1} + b \times 1000^{n-2} ...$ a = key / $1000^{n-1}$ b = key / $1000^{n-2}$ ... ## 特殊討論 1. KeyDivisor 設定成10的冪次倍數時(10/100/1000...),在十進位制系統可以很直覺的檢視,缺點就是要操作除法與取餘運算較為費時間 2. KeyDivisor 設定成2的冪次倍數時(2/4/8/16/32...),在二進位制系統可以很直覺的檢視,但在十進制不容易檢視,好處在可以用位元運算取代除法與取餘運算 ## KeyDivisor設定為1024 KeyDivisor = 1024 KeyShifter = 10 ($2^{10} = 1024$) ### 限制 param < 1024 (最大只能1023) ### 轉換關係 原始算法|優化算法 ---|--- $key = a \times 1024 + b$|$key = a << 10 + b$ a = key / 1024|a = key >> 10 b = key % 1024|b = key & (1024 - 1)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up