请各位帮忙,这式能否简化
(tmp-(pos & 0xFF)) ^ (pos & 0xFF)

解决方案 »

  1.   

    这式子用于C++对文件进行解码
    修正一下应该如下:
    (tmp - (pos &0x000000FF)) ^ (pos & 0x000000FF)
    但我编写的解码程序比原来的明显慢
    所以
    我怀疑我的算法有问题
      

  2.   

    因为 pos & 0x000000FF出现了两次
    所以,我认为应该可以简化运算.过程并不重要,关键运算越简单,速度越快.
    请各位算法高手帮忙
      

  3.   

    那你就先计算pos & 0x000000FF,然后再计算好了。
      

  4.   

    (tmp-(pos & 0x000000FF)) ^ (pos & 0x000000FF)其中,tmp是源文件的数据,单字节
    pos是文件指针的当前位置
    结果就是解码后的数据,单字节
      

  5.   

    我有点看法,但不知道是否正确.
    因为参与计算的源数据都是单字节,结果也是单字节
    所以,先取pos最后8位,
    pos & 0xFF的结果不就是pos吗
    那么是不是可以简化为(tmp-pos)^pos
      

  6.   

    已经解决,最后化简为 (tmp-(short)pos) ^ (short)pos
    但是,这不是导致速度慢的原因。主要原因是文件读写问题。
    将文件一次性读进内存,然后在内存解码,再一次性写到文件。
    速度快很。
    谢谢大家。