最新消息:点击查看大S的省钱秘笈

循环左移,循环右移的宏定义C/C++版

编程相关 Slyar 198浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

网络安全实验课算MD5和SHA1的时候要用到循环移位,自己算嫌麻烦,于是写了个程序,变成宏定义就精简多了...

0x20是十进制的32,你是多少位的类型就换成多少就好了,这里是int。原理也很简单,两边一来一去然后或一下把空出来的0补全...

循环左移:

#define CROL(value, bits) ((value << bits) | (value >> (0x20 - bits)))

循环右移:

#define CROR(value, bits) ((value >> bits) | (value << (0x20 - bits)))

参数value是int型变量

参数bits是循环移位的位数

转载请注明:Slyar Home » 循环左移,循环右移的宏定义C/C++版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (8)

  1. 你确定这个是对的?如果value是负数呢,value >> (32 - bits)前面不就补1了
    Monkey4年前 (2012-10-17)回复
  2. felix021那个没懂.那个''是神马意思呢?博主或者felix021能否解释下
    klion266年前 (2011-04-08)回复
  3. 我们都是嫌变成麻烦然后自己算。。。。
    你的小师妹6年前 (2011-04-01)回复
  4. 我也觉得内联函数合适
    雕刻机6年前 (2011-03-24)回复
  5. @第二纪元 没所谓啊,2个东西,用哪个都好...
    Slyar6年前 (2011-03-23)回复
  6. @felix021 表情神马的最讨厌了...=_=我靠这个更变态,收了...
    Slyar6年前 (2011-03-23)回复
  7. 擦。。居然还有表情,WP真蛋疼。 #define CROL(value, bits) ((value <> (8 * sizeof(value) - bits)))
    felix0216年前 (2011-03-23)回复
  8. 为什么不用内联函数?
    第二纪元6年前 (2011-03-23)回复