Tương đương (trong C#) của toán tử >>>
của Java là gì?Tương đương với toán tử ba ca của Java (>>>) trong C#?
(Chỉ cần làm rõ, tôi không đề cập đến >>
và <<
nhà khai thác.)
Tương đương (trong C#) của toán tử >>>
của Java là gì?Tương đương với toán tử ba ca của Java (>>>) trong C#?
(Chỉ cần làm rõ, tôi không đề cập đến >>
và <<
nhà khai thác.)
Trong C#, bạn có thể sử dụng các loại unsigned integer, và sau đó là <<
và >>
làm những gì bạn mong đợi. Các MSDN documentation on shift operators cung cấp cho bạn các chi tiết.
Vì Java không hỗ trợ số nguyên không dấu (ngoài char
), toán tử bổ sung này trở nên cần thiết.
cảm ơn tuyệt vời cho đầu vào – Nikolaos
Java không có phím tắt trái (<<<
), nhưng dù bằng cách nào, bạn chỉ có thể truyền tới uint
và shfit từ đó.
Ví dụ:
(int)((uint)foo >> 2); // temporarily cast to uint, shift, then cast back to int
Khi đọc bài viết này, tôi hy vọng kết luận của tôi về cách sử dụng như sau là chính xác. Nếu không, thông tin chi tiết được đánh giá cao.
Java
i >>>= 1;
C#:
i = (int)((uint)i >> 1);
n >>> s trong Java là tương đương với TripleShift (n, s) nơi:
private static long TripleShift(long n, int s)
{
if (n >= 0)
return n >> s;
return (n >> s) + (2 << ~s);
}
'(2 << ~ s)' sẽ không hoạt động ... – Lucero
nó hoạt động cho vb.net đặc biệt là –
Đối VB của tôi .Net folks
Những câu trả lời gợi ý trên sẽ cung cấp cho bạn tràn ngoại lệ với Option Strict ON
Hãy thử điều này ví dụ -100 >>> 2
với các giải pháp trên:
Các mã sau đây làm việc luôn cho >>>
Function RShift3(ByVal a As Long, ByVal n As Integer) As Long
If a >= 0 Then
Return a >> n
Else
Return (a >> n) + (2 << (Not n))
End If
End Function
@Sebastien Lebreton tôi đã không nhìn thấy giải pháp của bạn trước khi đăng bài này –
Không có >>> toán tử trong C#. Nhưng bạn có thể chuyển đổi giá trị của mình như int, long, Int16, Int32, Int64 thành uint, ulong, UInt16, UInt32, UInt64, v.v.
Đây là ví dụ.
private long getUnsignedRightShift(long value,int s)
{
return (long)((ulong)value >> s);
}
Không có toán tử <<< nào trong Java, chỉ là toán tử >>>. – Jesper