Tôi đã cố gắng làm việc này trong vài ngày, tôi đã đọc một nghìn hướng dẫn và câu hỏi của mọi người, nhưng tôi vẫn không thể tìm ra cách để làm đúng.C# Xoay bit sang vấn đề tràn bên trái
Điều tôi muốn làm là xoay các bit sang trái, đây là một ví dụ.
số gốc = 10.000.001 = 129 gì tôi cần = 00000011 = 3
tôi phải xoay các bit sang trái một số tiền nhất định của thời gian (nó phụ thuộc vào những gì mà người dùng), đây là những gì tôi đã làm:
byte b = (byte)129;
byte result = (byte)((byte)b << 1);
Console.WriteLine(result);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
vấn đề với điều này nó mà nó gây ra một lỗi (OverflowException) khi tôi cố gắng sử dụng các nhà điều hành (< <) với con số đó (lưu ý rằng nếu tôi đặt một số mà bit đầu tiên là 0; ví dụ : 3 = 00000011, nó hoạt động như dự định và trả về kết quả là 6.
Vấn đề là, nếu bit đầu tiên là 1, nó sẽ cho tôi lỗi (OverflorException). Tôi biết điều này không xoay, nó chỉ là một chuyển dịch, bit đầu tiên biến mất và vào cuối byte là 0 bật lên, và sau đó tôi có thể thay đổi nó bằng thao tác OR 000000001 để làm cho nó thành 1 (nếu bit đầu tiên là 1, nếu nó là 0 tôi chỉ để nó ở đó).
Bất kỳ ý tưởng nào? Cảm ơn trước!
Có u cố gắng sử dụng các từ khóa không được kiểm soát? http://msdn.microsoft.com/de-de/library/a569z7k8.aspx – CSharpie
Bạn chỉ làm việc đó với byte? Nếu vậy bạn có thể ăn gian một chút bằng cách dịch chuyển như một int và sau đó sử dụng một mặt nạ để cắt bớt nó một khi bạn đã làm xong, có khả năng sử dụng một mặt nạ khác và thay đổi để có được các bit để đưa vào cuối thấp hơn. – Chris
Khi tôi làm điều này, tôi không nhận được một 'OverflowException'. –