There was an error while loading. Please reload this page.
1 parent 754c90f commit 937ffeeCopy full SHA for 937ffee
Math/1017.Convert-to-Base--2/Readme.md
@@ -0,0 +1,9 @@
1
+### 1017.Convert-to-Base--2
2
+
3
+本质上和求N的任何K进制的转化一样的做法。求得余数```r=N%K```作为当前最低位的数字,然后将```N=(N-r)/K```作为下一个循环的初始值直至为零。把所有的数字拼接起来倒序输出就是K进制的结果。
4
5
+特别注意,余数r必须是正数,也就是说无法除尽的时候,采用的是向下取整。比如说5/(-3),依据严格的数学定义,商是-2,余数是1.
6
7
+但是,当除数是负数的时候,不同语言的运算规则会不一样。在C++/Java里面,整数的除法都是向零取整。比如说5/(-3),结果商是-1,余数是-2.这个余数因为是负数,是无法用来作为进制转换结果的。解决方案是:将商加上一,余数加上abs(K)。这样就转变成了向下取整的结果,余数也变成了正数。在这个例子中,结果商就是-1,余数是1.
8
9
+事实上,在wiki里面已经明确写明了negative base calculation的方法:https://en.wikipedia.org/wiki/Negative_base#Calculation
0 commit comments