回 帖 发 新 帖 刷新版面

主题:哪位大哥帮帮忙啊

这是一个C#.NET的控制台应用程序

using System;
 
class MyClass
{
    public static void Main()
    {
        int varA = 10; //二进制为 00001010
        int varB = 20; //二进制为 00010100

        // “与”运算
        int andResult = varA & varB;
        Console.WriteLine("10 & 20 = {0}", andResult);

        // “或”运算
        int orResult = varA | varB;
        Console.WriteLine("10 | 20 = {0}", orResult);

        // “异或”运算
        int notorResult = varA ^ varB;
        Console.WriteLine("10 ^ 20 = {0}", orResult);

        // “求补”运算
        Console.WriteLine("~ {0:x8}  = {1:x8}", varA, ~varA);

        // 按位右移
        Console.WriteLine("{0:x8} >> 3 = {1}", varA, varA >> 3);

        // 按位左移
        Console.WriteLine("{0:x8} << 3 = {1}", varA, varA << 3);
    }
}

运行结果是:

10&20=0
10|20=30
10^20=30
~0000000a=fffffff5
0000000a>>3=1
0000000a<<3=80
不懂啊,哪位大哥大姐能给我解释一下啊,越具体越好啊

回复列表 (共4个回复)

沙发

这有什么好解释,自己看一下基本运行就好

板凳

这是二进制的计算问题
二进制的计算是按位进行的。比如&操作,
10的二进制为 00001010
20的二进制为 00010100
按位与时只有对应位都为1是结果才是1,由于
 00001010&
 00010100
=00000000
所以10&20=0。
或操作只有对应位都位0时才为0,否则为1;
已或是相同为0,不同为1。
移位就是向左向右移动,用0补充空出的位置。

3 楼

求补就是各位取反最后结果再加1

4 楼

谢谢啦

我来回复

您尚未登录,请登录后再回复。点此登录或注册