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

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

[复制链接]
 楼主| 发表于 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<old_a)
  则一定有进位,否则没有进位。
  所以a+b是否有进位转化为,64bit无符号数比较大小,现在的问题是:
  a 和 old_a存储在 MMX 寄存器或者XMM寄存器,如何判定 a 是否小于 old_a.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-8 13:10:37 | 显示全部楼层
到这里
http://bbs.emath.ac.cn/thread-269-1-1.html
讨论加法问题吧
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-26 16:06 , Processed in 0.042743 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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