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。 * */
当前名称:九、运算符之按位运算符
网站地址:https://www.cdcxhl.com/article48/pogeep.html
成都网站建设公司_创新互联,为您提供云服务器、软件开发、网站收录、全网营销推广、搜索引擎优化、网站导航
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联