using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _9.運算符之按位運算符 { class Program { static void Main(string[] args) { sbyte a = 65, b = -17; // 65 原碼 0100 0001 反碼 0100 0001 補碼 0100 0001 // ~65 補碼 1011 1110 反碼 1100 0001 原碼 1100 0010 => -66 Console.WriteLine("~{0} = {1}", a, ~a); // -17 原碼 1001 0001 反碼 1110 1110 補碼 1110 1111 // ~(-17) 補碼 0001 0000 反碼 0001 0000 原碼 0001 0000 => 16 Console.WriteLine("~{0} = {1}", b, ~b); // 65 原碼 0100 0001 反碼 0100 0001 補碼 0100 0001 // -17 原碼 1001 0001 反碼 1110 1110 補碼 1110 1111 // 65 & -17 補碼 0100 0001 反碼 0100 0001 原碼 0100 0001 => 65 Console.WriteLine("{0} & {1} = {2}", a, b, a & b); // 65 原碼 0100 0001 反碼 0100 0001 補碼 0100 0001 // -17 原碼 1001 0001 反碼 1110 1110 補碼 1110 1111 // 65 | -17 補碼 1110 1111 反碼 1001 0000 原碼 1001 0001 => -17 Console.WriteLine("{0} | {1} = {2}", a, b, a | b); // 65 原碼 0100 0001 反碼 0100 0001 補碼 0100 0001 // -17 原碼 1001 0001 反碼 1110 1110 補碼 1110 1111 // 65 ^ -17 補碼 1010 1110 反碼 1101 0001 原碼 1101 0010 => -82 Console.WriteLine("{0} ^ {1} = {2}", a, b, a ^ b); // 根據以上程式得出以下結論: // (-x) = (~x + 1) // (~x) = (-x - 1) Console.ReadKey(); } } } /** * 一、基本概念 * 1. 數值類型在內存都是二進制補碼形式進行存儲。 * 2. 對數值進行位運算符操作,實際上是對內存中的二進制位進行操作。 * * 二、原碼、反碼和補碼 * 1. 正數的原碼、反碼和補碼相同。 * 2. 負數的原碼、反碼和補碼轉換規則: * 原碼:操作數的二進制位。 * 反碼:原碼除符號位外各位進行取反,符號位為0是正數,符號位為1是負數。 * 補碼:反碼加1。 * * 三、按位運算符 * 1. (~)按位取反 對操作數二進制位進行各位取反。 * 2. (&)按位與 對兩個操作數的二進制位進行與操作。 * 3. (|)按位或 對兩個操作數的二進制位進行或操作。 * 4. (^)按位異或 對兩個操作數的二進制位進行異或操作。 * * 按位取反 如果二進制位為1,則結果為0,否則為1。 * 按位與 如果兩個位都為1,則結果為1,否則為0。 * 按位或 如果兩個位都是0,則結果為0,否則為1。 * 按位異或 如果兩個位不相同,則結果為1,否則為0。 * */
當前名稱:九、運算符之按位運算符
網站地址:http://m.newbst.com/article48/pogeep.html
成都網站建設公司_創新互聯,為您提供云服務器、軟件開發、網站收錄、全網營銷推廣、搜索引擎優化、網站導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯