Bạn chuyển sang bản tiện dụng lại ISO/IEC 23270:2006 — Information technology — Programming languages — C# và chuyển sang § 14.6. 4 của thánh viết. Ở đó bạn sẽ tìm thấy:
14.6.4 Bitwise nhà điều hành bổ sung
Đối với hoạt động của các hình thức ~ x, điều hành unary độ phân giải quá tải (§14.2.3) được áp dụng để chọn một nhà điều hành cụ thể thực hiện. Toán hạng được chuyển đổi thành kiểu tham số của toán tử đã chọn và loại kết quả là kiểu trả về của toán tử. Các toán tử bổ sung bit được xác định trước là:
int operator ~(int x) ;
uint operator ~(uint x) ;
long operator ~(long x) ;
ulong operator ~(ulong x) ;
Đối với mỗi toán tử này, kết quả của phép toán là bổ sung bit của x.
Mỗi kiểu enumeration E ngầm cung cấp cho các nhà điều hành Bitwise bổ sung sau đây:
E operator ~(E x);
Kết quả của việc đánh giá ~x
, nơi x
là một biểu hiện của một kiểu liệt kê E
với một loại tiềm ẩn U
, là chính xác giống như đánh giá unchecked((E)(~(U)x))
. Toán tử này chỉ được xem xét bởi độ phân giải quá tải của toán tử đơn nhất khi kiểu toán hạng là kiểu enum E
(§14.2.3).
Các hình thức được nâng lên (§14.2.7) của các toán tử bổ sung bitwise được xác định trước chưa được xác định ở trên cũng được xác định trước.
Trong trường hợp của bạn ~31
giống như ~ 0x0000001F
. Khiếu nại bitwise của 0x0000001F
là 0xFFFFFFE0
. Tại sao họ không chỉ viết mặt nạ thực sự mà họ muốn vượt ra ngoài tôi.
Nguồn
2011-11-02 20:50:38
Bổ sung bitwise của nó. Xem liên kết dưới đây. [Làm thế nào Liệu các Bitwise Bổ sung Điều Hành Công việc] [1] [1]: http://stackoverflow.com/questions/791328/how-does-the-bitwise-complement-operator-work – Nerdtron
Đối với ref tương lai đây là danh sách các toán tử C#. [Nhà điều hành C#] (http://msdn.microsoft.com/en-us/library/6a71f45d.aspx) –