为什么负数取余操作(%)在c和python下结果不同

最近在用python,偶尔有一次涉及到了负数取余操作: -3 % 4

按照之前写c/c++、java的习惯,这里肯定是等于-3。但是python下返回的结果竟然是1

为什么会有不同的表现呢?先从取余操作本身说起:

 

关于取余(modulo operation)

取余的定义

由于不同的架构有不同的数字表示法和运算法,因此他们对于取余的定义也有可能略有不同。

一般来说,公认的取余操作(被除数a、除数n、商q以及余数rn % a = r)需要满足以下三条:

\begin{align}<br /><br /> q \,&\in \mathbb{Z} \\<br /><br /> a \,&= n q + r \\<br /><br /> |r| \,&< |n|.<br /><br /> \end{align}

然而这个定义是非常宽泛的。以 -3 % 4为例:

-3既可以表示为:-3 = 4 * -1 + 1

也可以表示为:-3 = 4 * 0 + (-3)

这两种表示法分别对应了两种实现方法:Truncated Division及 Floored Division。两种实现方法的求商方式不同,导致其最终结果也不同。 阅读详细 »

找工作总结

如今找工作已落下尾声,三方也已签。之前有写过一篇成都之行流水账,不过那篇实是毫无价值,所以在此补一份找工作总结,希望能够为那些未曾经历过面试的学弟学妹们提供参考,也让我借写文对自己好好总结一番。

主要以招聘情况、各公司简单面经、找工作经验总结为主,点一下后面的标题就可以展开看详细 阅读详细 »

Day 8942 成都找工作之行流水账

因为重庆实在是没公司来,而十一后又要出去开会,所以选择先到成都来面个痛快
还好今年各大公司9月份就纷纷开始抢人,正好可以避开开会时间。

最后就结果而言,真是出乎意料。我认为,我绝对是这批面试者里最最最幸运的,人家以实力说话,我以运气通关。。。 阅读详细 »

Cocos2d-x在android开发下的帧数控制

自从人参第一次面试悲剧以后决定多补linux,顺手在linux下写点代码
于是就瞄准了cocos2dx这个框架,写个android下的小游戏
顺便给大家做下效率参考:
手机配置CPU 600Mhz,内存256M,显卡未知
以前用java下的opengles,大概每秒可以渲染16x16的纹理6000次
cocos2dx下面用的版本是2.1.4,自己做了个子弹池,全部用一个批次,在有纹理旋转的情况下每秒32000次
感觉30fps的话已经够用了!但是一接到手机上,发现fps怎么不受控制!?

一路追到Cocos2dxRenderer.java里一览究竟: 阅读详细 »

第五届华为“创新杯”编程大赛初赛题目(第二场)

接上一篇帖子 阅读详细 »

第五届华为“创新杯”编程大赛初赛题目(第一场)

分了两场,每场三道题
这次华为终于用online judge了 OTL…… 难度也是比去年的提高了不少(去年题还都停留在字符串操作上 见:http://blog.thpiano.com/?p=543
不过就是华为那边服务器运行结果慢如牛,比完了都不知道结果……
顺便所有题都没有输入输出范围,部分题意也有些含糊
先把题目和自己的烂代码贴一下吧 阅读详细 »

2013腾讯实习生一面后续

一面过后又面了2面、HR面,随便写写 阅读详细 »

2013腾讯实习生一面流水账

笔试过后第三天出结果,同一个教室的下午3点就接到面试通知了,我这边一直寂静……
后来接到了腾讯的电话,说我资料填的不详细,让我补充
要补的就是诸如面试岗位、城市、擅长的语言等。我觉得很奇怪,我明明都填了,并且从电话那边的口气来听,他也看得到我之前填的资料
或许只是来确认下,或是要我再考虑吧。我想想确实也有点问题,本科做的项目都用java,但是擅长的选的c/c++;岗位填的后台,简历里却又说平时爱好做游戏

到了晚上6点,都准备明天去霸面了,终于还是收到通知了。 阅读详细 »

2013重庆腾讯实习生笔试的两道题

(今天连bluehost好慢
刚刚被虐回来,稍微总结一下
题的范围很广,从TCPIP协议、数据库、算法与数据结构、计算机系统到语言细节,都有涉及

另外今年的笔试题里有10道选择题、5道填空和加分题的第一题都与去年的题目一模一样 OTL……
没看去年的题亏死了

挑两道印象比较深的题记录下: 阅读详细 »

第4届华为编程大赛决赛试题

这回是自己偷偷把试题带回来了。这次比赛一共就一道题,上午9点做到晚上5点,不能上网,中午管饭
之前听说往届都有界面需求,这机房只有vc6,所以前几天还补了下mfc,果然太难用了……
今天一看题目,不需要界面,还好还好
不过也是做得异常地郁闷,真是费劲千辛万苦最后才搞出一个不怎么靠谱的答案,对比赛成绩不能有任何的指望了,就当是蹭饭机房一日游

题目是这样的: 阅读详细 »