十进制数 N 和其他 d 进制数的转换
-
十进制数 N 和其他 d 进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理
N = (N div d) × d + N mod d
(其中:div 为整除运算,mod 为求余运算) 然后对余数反转得出的即为结果
代码:/** @param n : 要转换的数值 @param d : 要转换成的进制数 */ func Conversion(n int, d int) { var stack []int for n != 0 { stack = append(stack, n % d) n /= d } // 输出 START for i := len(stack) - 1 ; i >= 0 ; i -- { fmt.Printf("%d ", stack[i]) } fmt.Println() // 输出 END }
- 例如下面这个例子
十进制 | 十六进制 | 八进制 | 二进制 |
---|---|---|---|
1348 | 544 | 2504 | 10101000100 |
- 十进制 1348 转为 八进制 2504 运算过程
N | N div 8 | N mod 8 |
---|---|---|
1348 | 168 | 4 |
168 | 21 | 0 |
21 | 2 | 5 |
2 | 0 | 2 |
- 十进制 1348 转为 十六进制 544 运算过程
N | N div 16 | N mod 16 |
---|---|---|
1348 | 84 | 4 |
84 | 5 | 4 |
5 | 0 | 5 |
- 十进制 1348 转为 二进制 10101000100 运算过程
N | N div 2 | N mod 2 |
---|---|---|
1348 | 674 | 0 |
674 | 337 | 0 |
337 | 168 | 1 |
168 | 84 | 0 |
84 | 42 | 0 |
42 | 21 | 0 |
21 | 10 | 1 |
10 | 5 | 0 |
5 | 2 | 1 |
2 | 1 | 0 |
1 | 0 | 1 |
参考
tags: