我試圖將 pep8 中的一個數字分解成千位,然后是代表數字百的部分,然后是代表十位數的部分,最后是代表個位數的部分。
例如:數字 439 應該這樣分解為 0、4、3、9。
你有什么建議嗎 ?
uj5u.com熱心網友回復:
數字 439 是如何存盤的?它是一個字串,還是一個以二進制形式存盤在某處的數值?
你有什么限制?如果您知道該數字始終小于 10,000 且始終為非負數,則可以做出一些簡化的選擇。
此外,您需要考慮是否需要數字 0、4、3、9 或字串形式“0439”。
以下帖子有很多很好的答案,特別是對于沒有硬體劃分或模塊的小型處理器:https : //electronics.stackexchange.com/questions/12618/fastest-way-to-get-integer-mod-10- and-integer-divide-10
有幾種方法:
一些涉及除法或模數的 10 次冪以提取單個數字
- 與上述類似,但使用減法、移位和其他方法將除法或模數替換為 10;這個答案顯示了一種使用減法而不是除法從非負數中提取數字的簡單方法 https://electronics.stackexchange.com/a/91940
二進制數到BCD的轉換;BCD 數字的每個十進制數字都是隔離的。此類別或多或少將整數從二進制轉換為 BCD,從中您可以相對簡單地提取單個數字
https://electronics.stackexchange.com/a/112455
您還可以搜索稱為itoa— 代表整數到 ascii 的演算法。如果你有一個單獨的十進制數字(如上面的一些),它可以被轉換為 ascii 字符,例如用于列印,通過添加 48,這是 '0' 的 ascii 代碼 - 數字零的可列印字符。這作業 b/c 十進制數字的字符代碼是連續的,所以 9 48 = 57,即 '9'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/313736.html
上一篇:只有EAX的低半部分歸零?(MASM使用.486/.modelflat,stdcall)
下一篇:匯編中的At&t語法?
