【问题标题】:ANDing unsigned binary representationsANDing 无符号二进制表示
【发布时间】:2012-01-13 16:55:31
【问题描述】:

我正在尝试 AND 两个不同的二进制数。 到目前为止,这是我的代码(我发布到 pastebin,因为我不确定我的布局是否正确) http://pastebin.com/FRT6Qig6

我的问题是我只是不明白我的答案应该是什么。或者即使我的代码在做正确的事情。

namespace ConsoleApplication1 {
    class Two {
        public void run() {
            byte a = 255;
            byte b = 85;
            byte c;

            a = Convert.ToByte("10101111", 2);  //85
            b = Convert.ToByte("011111111", 2); //255

            c = (byte) (a & b);

            Console.WriteLine
                ("ANDing two bytes  - decimal:{0:D3}  hex:{0:x2}  binary:{1}",
                 c, Convert.ToString(c, 2));

            //wait until next press
            Console.ReadKey();
        }
    }
}

【问题讨论】:

  • 在您提出问题之前,我们无法为您提供帮助。
  • 我的答案应该是什么?当我 AND 255 和 85 时。这也是我的代码应该做的吗?
  • 请注意,85 应该是1010101,而不是10101111
  • @Alex - 你需要做一些研究,这样你才能确定正确的答案。您不能指望我们帮助您了解如何将两个基数为 2 的数字进行与运算。你知道 X AND Y 为真的条件吗?

标签: c# binary bit-manipulation computer-architecture


【解决方案1】:
【解决方案2】:

因为对于255 的二进制无符号表示,一个字节中的所有位都已打开,所以将任何单字节值与255 进行与运算将返回您的输入未更改:

0x1 & 0xFF == 0x1
0x2 & 0xFF == 0x2
..
0xFE & 0xFF == 0xFE
0xFF & 0xFF == 0xFF

只有当其中一个值没有全部打开时,AND 才会变得更有趣:

0101 0101 & 0000 1111 == 0000 0101

【讨论】:

    【解决方案3】:

    我的答案应该是什么?

    我会继续回答这个问题

    A AND B 的真值表如下:

    A B 值
    1 1 1
    1 0 0
    0 1 0
    0 0 0

    A OR B 的真值表如下:

    A B 值
    1 1 1
    1 0 1
    0 1 1
    0 0 0

    【讨论】:

      猜你喜欢
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 2020-01-22
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-23
      相关资源
      最近更新 更多