求一移位函数,左移或右移,将移出位自动转移到尾部或顶部

elvazhuwwww 2016-01-28 08:34:32
求一移位函数,将一单字节或二字节数值,此数值为无符号数
(1)左移,将移出位的数值自动排列到此数值的尾部 生成一个新的数值
(2)右移,将移出位的数值自动排列到此数值的顶部 生成一个新的数值

谢谢大家。
...全文
365 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-01-28
  • 打赏
  • 举报
回复
byte RLShift(byte input, int num)
{
	return (byte)(input << num | input >> (sizeof(byte) - num));
}

byte RRShift(byte input, int num)
{
	return (byte)(input >> num | input << (sizeof(byte) - num));
}

ushort RLShift(ushort input, int num)
{
	return (ushort)(input << num | input >> (sizeof(ushort) - num));
}

ushort RRShift(ushort input, int num)
{
	return (ushort)(input >> num | input << (sizeof(ushort) - num));
}
必须是无符号的,其他长度以此类推
bdmh 2016-01-28
  • 打赏
  • 举报
回复
给你个右移

        private void Right(int value)
        {
            int m = value << 15;
            m = m & 0x8000;
            int n = value >> 1;
            n = n | m;
            MessageBox.Show(n.ToString());
        }
bdmh 2016-01-28
  • 打赏
  • 举报
回复
给你一个左移的,右移你就模仿着做吧

        private void Left(int value)
        {
            int m = value >> 15;
            m = m & 1;
            int n = value << 1;
            n = n | m;
            MessageBox.Show(n.ToString());
        }
elvazhuwwww 2016-01-28
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
给你个右移

        private void Right(int value)
        {
            int m = value << 15;
            m = m & 0x8000;
            int n = value >> 1;
            n = n | m;
            MessageBox.Show(n.ToString());
        }
谢谢。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧