找回密码
 欢迎注册
楼主: 无心人

[讨论] 问大家一个比较大小的问题

[复制链接]
 楼主| 发表于 2008-3-31 17:21:19 | 显示全部楼层
CPU的进位逻辑是怎么写的?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-3-31 20:53:14 | 显示全部楼层
假设能比较高低各32位数字 大于返回FFFFFFFF 不大于返回00000000 等于返回FFFFFFFF 不等于返回00000000 则先进行大于比较 再进行等于比较 两个结果相减 得到9种结果是互不相等的9个64位数字 问题是如何区别他们呢
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-8 07:40:10 | 显示全部楼层
看到个文章,不过感觉还是太复杂了 x< y: (x-y) ^ ((x^y) & ((x-y)^x)) x<=y: (x|~y) & ((x^y) | ~(y-x)) x< y: (~x&y) | ((~x|y) & (x-y)) // 无符号x,y比较 x<=y: (~x|y) & ((x^y) | ~(y-x)) // 无符号x,y比较
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-8 07:55:58 | 显示全部楼层
哦 楼上的方法什么地方转来的? 可以利用哦
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-8 08:43:00 | 显示全部楼层
x< y: (~x&y) | ((~x|y) & (x-y)) mm0 = y mm1 = x movq mm2, mm1 psubq mm1, mm0 pcmpeqd mm3, mm3 pxor mm3, mm2 //mm3=~x pandn mm2, mm0 //mm2=(~x & y) por mm3, mm0 //mm3=(~x | y) pand mm3, mm1 por mm2, mm3 8条指令得到x < y结果
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-8 09:27:02 | 显示全部楼层
http://www.yuanma.org/data/2007/1212/article_2922.htm 刚才看李开复的贴子不小心看到的,这文章亮点就上面那些, 刚才由于发帖数量限制贴不上来。 楼主代码写得很快啊,不管此方法效率如何,至少也提供了一种解决方案。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-8 09:45:48 | 显示全部楼层
该死的SSE2没求反运算 只好用FFFFFFFFFFFFFFF xor x = ~x代替
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-8 10:07:24 | 显示全部楼层
试了一下,比较大小的结果直接要取计算结果的最高位即可, 64bit运算即取bit63(假设bit0是最低位),还算方便
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-8 11:38:58 | 显示全部楼层
我比较关心 64bit 无符号数的大小比较。 若a,b同为64bit无符号数。 old_a= a; a=a+b; if (a
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-8 13:10:37 | 显示全部楼层
到这里 http://bbs.emath.ac.cn/thread-269-1-1.html 讨论加法问题吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-11-15 01:18 , Processed in 0.024094 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表