溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

九、運(yùn)算符之按位運(yùn)算符

發(fā)布時(shí)間:2020-07-30 08:13:10 來(lái)源:網(wǎng)絡(luò) 閱讀:457 作者:vik_xiao 欄目:編程語(yǔ)言
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _9.運(yùn)算符之按位運(yùn)算符
{
    class Program
    {
        static void Main(string[] args)
        {
            sbyte a = 65, b = -17;
            
            //  65 原碼 0100 0001 反碼 0100 0001 補(bǔ)碼 0100 0001
            // ~65 補(bǔ)碼 1011 1110 反碼 1100 0001 原碼 1100 0010     => -66
            Console.WriteLine("~{0} = {1}", a, ~a);
            
            // -17    原碼 1001 0001 反碼 1110 1110 補(bǔ)碼 1110 1111
            // ~(-17) 補(bǔ)碼 0001 0000 反碼 0001 0000 原碼 0001 0000  => 16
            Console.WriteLine("~{0} = {1}", b, ~b);
            
            //  65      原碼 0100 0001 反碼 0100 0001 補(bǔ)碼 0100 0001
            // -17      原碼 1001 0001 反碼 1110 1110 補(bǔ)碼 1110 1111
            // 65 & -17 補(bǔ)碼 0100 0001 反碼 0100 0001 原碼 0100 0001 => 65
            Console.WriteLine("{0} & {1} = {2}", a, b, a & b);
            
            //  65      原碼 0100 0001 反碼 0100 0001 補(bǔ)碼 0100 0001
            // -17      原碼 1001 0001 反碼 1110 1110 補(bǔ)碼 1110 1111
            // 65 | -17 補(bǔ)碼 1110 1111 反碼 1001 0000 原碼 1001 0001 => -17
            Console.WriteLine("{0} | {1} = {2}", a, b, a | b);
            
            //  65      原碼 0100 0001 反碼 0100 0001 補(bǔ)碼 0100 0001
            // -17      原碼 1001 0001 反碼 1110 1110 補(bǔ)碼 1110 1111
            // 65 ^ -17 補(bǔ)碼 1010 1110 反碼 1101 0001 原碼 1101 0010 => -82
            Console.WriteLine("{0} ^ {1} = {2}", a, b, a ^ b);
            
            // 根據(jù)以上程式得出以下結(jié)論:
            // (-x) = (~x + 1)
            // (~x) = (-x - 1)
            
            Console.ReadKey();
        }
    }
}

/**
 * 一、基本概念
 * 1. 數(shù)值類型在內(nèi)存都是二進(jìn)制補(bǔ)碼形式進(jìn)行存儲(chǔ)。
 * 2. 對(duì)數(shù)值進(jìn)行位運(yùn)算符操作,實(shí)際上是對(duì)內(nèi)存中的二進(jìn)制位進(jìn)行操作。
 * 
 * 二、原碼、反碼和補(bǔ)碼
 * 1. 正數(shù)的原碼、反碼和補(bǔ)碼相同。
 * 2. 負(fù)數(shù)的原碼、反碼和補(bǔ)碼轉(zhuǎn)換規(guī)則:
 *  原碼:操作數(shù)的二進(jìn)制位。
 *  反碼:原碼除符號(hào)位外各位進(jìn)行取反,符號(hào)位為0是正數(shù),符號(hào)位為1是負(fù)數(shù)。
 *  補(bǔ)碼:反碼加1。
 * 
 * 三、按位運(yùn)算符
 * 1. (~)按位取反   對(duì)操作數(shù)二進(jìn)制位進(jìn)行各位取反。
 * 2. (&)按位與     對(duì)兩個(gè)操作數(shù)的二進(jìn)制位進(jìn)行與操作。
 * 3. (|)按位或     對(duì)兩個(gè)操作數(shù)的二進(jìn)制位進(jìn)行或操作。
 * 4. (^)按位異或   對(duì)兩個(gè)操作數(shù)的二進(jìn)制位進(jìn)行異或操作。
 * 
 * 按位取反 如果二進(jìn)制位為1,則結(jié)果為0,否則為1。
 * 按位與   如果兩個(gè)位都為1,則結(jié)果為1,否則為0。
 * 按位或   如果兩個(gè)位都是0,則結(jié)果為0,否則為1。
 * 按位異或 如果兩個(gè)位不相同,則結(jié)果為1,否則為0。
 * 
 */


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI