温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

九、运算符之按位运算符

发布时间:2020-07-30 08:13:10 来源:网络 阅读:462 作者:vik_xiao 栏目:编程语言
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。
 * 
 */


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI