想试试自己写 bin() 的功能,但是我写的有一步 n = n / 2 如果输入是负数会卡在 -1 / 2 = -1 死循环里。当然这个问题很好解决,但是我就想不通不带浮点的话 1/2=0 我能理解,为啥 -1/2 得到 -1 。
麻烦请从原理上解释一下,谢过。
麻烦请从原理上解释一下,谢过。
1
choury Mar 29, 2017 via Android
向下取整,这又不是四舍五入
|
2
Tink PRO 向下取整
|
3
Perry Mar 29, 2017 via iPhone
python 是 floor
c 是只看整数 |
4
Daetalus Mar 29, 2017 理解成在箭头向右的数轴上,左边最近的一个整数。
|
5
Perry Mar 29, 2017 via iPhone
|
6
knightdf Mar 29, 2017 负数取模问题,参考 http://www.jianshu.com/p/452c1a5acd31
|
7
siteshen Mar 29, 2017 我来写个简单易懂的答案
-1 / 2 = (1 - 2) / 2 = 1/2 - 2/2 = 0 - 1 = -1 |
8
zhidian Mar 29, 2017
为什么我想打楼上那个简单易懂的答案呢?!逗我么。 Round 本来就有 round to zero , round down, round up 各种啊……
|
9
owt5008137 Mar 30, 2017 via Android
N/2 相当于 N>>2 。很多编译器都会这么优化掉。
所以-1 的补码全是 1 喽,有符号类型右移完还是全 1 喽 |
10
msg7086 Mar 30, 2017
整数除法和浮点数除法是两回事啊……
|
11
lxy42 Mar 30, 2017 via Android
python 文档有专门一节讲这个的
|
13
qiyuey Mar 30, 2017
不同语言的处理结果并不相同,所以不建议这样用
|