小白问题,-1 / 2 等于几?

2017-03-29 20:35:18 +08:00
 hippypopo
想试试自己写 bin() 的功能,但是我写的有一步 n = n / 2 如果输入是负数会卡在 -1 / 2 = -1 死循环里。当然这个问题很好解决,但是我就想不通不带浮点的话 1/2=0 我能理解,为啥 -1/2 得到 -1 。

麻烦请从原理上解释一下,谢过。
4161 次点击
所在节点    Python
13 条回复
choury
2017-03-29 20:41:31 +08:00
向下取整,这又不是四舍五入
Tink
2017-03-29 20:42:29 +08:00
向下取整
Perry
2017-03-29 20:54:51 +08:00
python 是 floor
c 是只看整数
Daetalus
2017-03-29 20:55:50 +08:00
理解成在箭头向右的数轴上,左边最近的一个整数。
Perry
2017-03-29 20:55:53 +08:00
knightdf
2017-03-29 20:57:10 +08:00
负数取模问题,参考 http://www.jianshu.com/p/452c1a5acd31
siteshen
2017-03-29 21:24:30 +08:00
我来写个简单易懂的答案
-1 / 2 = (1 - 2) / 2 = 1/2 - 2/2 = 0 - 1 = -1
zhidian
2017-03-29 21:45:47 +08:00
为什么我想打楼上那个简单易懂的答案呢?!逗我么。 Round 本来就有 round to zero , round down, round up 各种啊……
owt5008137
2017-03-30 00:16:33 +08:00
N/2 相当于 N>>2 。很多编译器都会这么优化掉。
所以-1 的补码全是 1 喽,有符号类型右移完还是全 1 喽
msg7086
2017-03-30 01:06:26 +08:00
整数除法和浮点数除法是两回事啊……
lxy42
2017-03-30 08:03:04 +08:00
python 文档有专门一节讲这个的
justfun
2017-03-30 08:38:29 +08:00
@zhidian
@siteshen 你们不要搞事情😂😂
qiyuey
2017-03-30 11:42:53 +08:00
不同语言的处理结果并不相同,所以不建议这样用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351299

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX