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


