回答这个问题时我遇到了一些问题: 我们给出了数字n和位置p。编写一系列操作,在数字(0或1)中打印位置p上的位值。示例:n = 35,p = 5 - >另一个例子:n = 35,p = 6 - > 0
打印数字位置p上的位值是什么意思?
35(100011)。如果从右到左读取位位置,那么为什么p = 5的位值 - > 1?
答案 0 :(得分:0)
这里的目的是检查给定数字内位置x的位值。
它可用于存储安全选项。 示例 - 位0是只读的,位1是写入,位2是创建新项目等。
您应该阅读有关布尔数学的知识,并了解如何用二进制方法表示数字。然后阅读" AND"操作(然后是NOT,OR,XOR,XON)。
我有一些简单的代码供你玩。我做了#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。