小编Lob*_*kon的帖子

C#将位旋转到左溢出问题

我一直试图让这个工作好几天,我已经阅读了一千个指南和人们的问题,但是,我仍然无法找到一种正确的方法.

我想要做的是将位旋转到左侧,这是一个例子.

原始编号= 10000001 = 129我需要的是= 00000011 = 3

我必须将这些位旋转一定时间(这取决于用户输入的内容),这就是我所做的:

byte b = (byte)129;
byte result = (byte)((byte)b << 1);
Console.WriteLine(result);

Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
Run Code Online (Sandbox Code Playgroud)

这个问题,当我尝试使用带有该数字的(<<)运算符时,它会导致错误(OverflowException)(请注意,如果我将第一位的数字设为0;例如:3 = 00000011;它的工作原理如预期的那样,结果返回6.

问题是,如果第一位是1,它会给我(OverflorException)错误.我知道这不是旋转,它只是一个移位,第一位消失,在字节结束时弹出一个0,然后我可以用OR 000000001操作改变它使它成为1(如果第一位是一个1,如果它是0我只是留在那里).

有任何想法吗?提前致谢!

c# bit

6
推荐指数
2
解决办法
1220
查看次数

标签 统计

bit ×1

c# ×1