C/C++实现循环移位

来源:互联网 发布:php 发送一条udp消息 编辑:程序博客网 时间:2024/04/30 07:13

(a<<2)|((unsigned)a>>30)

 

 

贴个Rotation.cpp:

//: C03:Rotation.cpp {O}
// From Thinking in C++, 2nd Edition
// Available at
http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Perform left and right rotations

unsigned char rol(unsigned char val) {
  int highbit;
  if(val & 0x80) // 0x80 is the high bit only
    highbit = 1;
  else
    highbit = 0;
  // Left shift (bottom bit becomes 0):
  val <<= 1;
  // Rotate the high bit onto the bottom:
  val |= highbit;
  return val;
}

unsigned char ror(unsigned char val) {
  int lowbit;
  if(val & 1) // Check the low bit
    lowbit = 1;
  else
    lowbit = 0;
  val >>= 1; // Right shift by one position
  // Rotate the low bit onto the top:
  val |= (lowbit << 7);
  return val;
} ///:~

原创粉丝点击