我想將數字從十六進制(基地16)轉換爲三元(基地3),
一個簡單的解決方案是轉換每個數字像這樣hex-> decimal-> binary-> ternary ,
是否有更高效的(=意味着更少的代碼)這個問題?彙編轉換從十六進制到基數3
-1
A
回答
1
取決於「二元」是什麼意思。如果你的意思是--CPU的內部表示,那肯定是要走的路。在任何數字系統中將數字轉換爲字符串涉及整數算術,並且用數字的字符串表示來做這件事很麻煩。
如果你的意思是 - 二進制字符串,一個字符串「0」和「1」字符,你不會錯。
總之,正確的算法將涉及:
- 轉換數量從十六進制字符串轉換爲整數(如果它是一個編譯時間常數 - 則彙編)
- 除以三說整一個循環,直到你達到零
- 存儲各部門的剩餘部分 - 這是你的三元位數
- 轉換三元位數ASCII
- 輸出
1
爲了在底m的數轉換成一個數在n進制:
- 轉換原始基礎m個成整數。這很簡單(主要是「value = value + digit * base」循環)。
- 將該整數轉換爲基數n。這很簡單(主要是「數字=值%基礎;價值=價值/基地」循環)。
對於某些情況(例如,在十六進制和整數之間轉換),通過使用位移和掩碼代替乘法,除法和模數來優化計算是很容易的。
相關問題
- 1. MIPS彙編:從整數轉換爲十六進制
- 2. 轉換十六進制到十進制
- 3. 將十六進制數組轉換爲十進制數Intel 8086彙編語言
- 4. 十進制到十六進制轉換在彙編中如何工作?
- 5. 將十六進制轉換爲二進制到十六進制?
- 6. 將十進制轉換爲十六進制和十六進制
- 7. 十六進制到二進制轉換
- 8. 轉換十六進制到二進制
- 9. 二進制到十六進制轉換
- 10. 十六進制和十進制轉換
- 11. 將字符串轉換爲十六進制到十六進制
- 12. 十六進制到整數轉換
- 13. 十六進制()參數不能轉換爲十六進制
- 14. 將彙編指令轉換爲十六進制格式?
- 15. 如何將字母轉換爲數字,同時將十六進制基數轉換爲十進制python 3?
- 16. C#System.OverflowException二進制到十進制和十六進制轉換
- 17. RGB十六進制轉換
- 18. 轉換爲十六進制?
- 19. 轉換十六進制到具有3位數字
- 20. 將八進制數轉換爲十進制和十六進制
- 21. Python - 從十六進制整數轉換爲十六進制字符串
- 22. 從十六進制字符串轉換爲十六進制字符數組
- 23. MIPS彙編中的十進制到二進制轉換
- 24. 從十六進制轉換爲字節
- 25. 從NSString轉換爲十六進制
- 26. 十六進制轉換爲十進制電壓轉換
- 27. 十進制轉換爲十六進制的轉換(Java)的
- 28. 基數爲十六進制
- 29. 轉換十六進制字符串十六進制值
- 30. 如何十六進制轉換爲十六進制
Hex-> binary非常簡單(除非你的十六進制值是一個字符串,否則它是非運算的,但即使這樣也很簡單)。所以做hex-> binary-> ternary。 –
@PaulR它是一個字符串,你能解釋一下這個過程嗎? – user3453625
每個十六進制字符直接映射到4個二進制位。 0 - > 0000,1-> 0001,...,9 - > 1001,A - > 1010,...,F - > 1111.所以如果你的字符串是137f,那麼這就變成0001 0011 0111 1111.也許這樣做首先在HLL(例如C)中獲取邏輯權限,然後將其轉換爲asm? –