Skip to content

Commit 937ffee

Browse files
authored
Create Readme.md
1 parent 754c90f commit 937ffee

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)