打印数字位置上的位值

时间:2017-12-01 08:59:01

标签: c#

回答这个问题时我遇到了一些问题: 我们给出了数字n和位置p。编写一系列操作,在数字(0或1)中打印位置p上的位值。示例:n = 35,p = 5 - >另一个例子:n = 35,p = 6 - > 0

打印数字位置p上的位值是什么意思?

35(100011)。如果从右到左读取位位置,那么为什么p = 5的位值 - > 1?

2 个答案:

答案 0 :(得分:0)

这里的目的是检查给定数字内位置x的位值。

它可用于存储安全选项。 示例 - 位0是只读的,位1是写入,位2是创建新项目等。

您应该阅读有关布尔数学的知识,并了解如何用二进制方法表示数字。然后阅读" AND"操作(然后是NOT,OR,XOR,XON)。

Here is a good link

我有一些简单的代码供你玩。我做了#34;检查"程序很长,所以你会明白。如果需要,我可以用一行来完成。

  private void button1_Click(object sender, EventArgs e)
  {
     int n ;

     int i ;

     string s;

     string b;

     n = 13;//1101 in binary representation

     i = 0;

     s = checkBitX(n,i);

     b =  Convert.ToString(n, 2);

     MessageBox.Show("Bit " + i.ToString() + " , in decimal number " + n.ToString() + ", binary = " + b +  " ,the bit is : " + s);


     i = 1;

     s = checkBitX(n, i);

     MessageBox.Show("Bit " + i.ToString() + " , in decimal number " + n.ToString() + ", binary = " + b + " ,the bit is : " + s);


  }
  private string checkBitX(int n, int i)
  {

     string s = "";

     int temp = (int)Math.Pow(2, i);

     int test = n & temp;

     if (test != 0)
     {
        s = "set";
     }
     else
     {
        s = "cleared";
     }

     return s;
  }

答案 1 :(得分:0)

  

35(100011)。如果从右到左读取位位置,那么为什么p = 5的位值 - > 1?

据推测,他们谈论的是从零开始,所以最右边的位是p=0,而p=5正在谈论第六个位。

在数学方面:

bool bitSet = ((n >> p) & 1) != 0;

可能是测试它的最简单方法;因此,如果p为5,则右移5(最右边的5位),然后测试 now 最右边的位是1还是0。