按位算术和运算符

问题描述:

当前正在研究按位运算。这很容易,因为我有一些CS背景。但我对这个操作员一时不了解。按位算术和运算符

例如:

variable3 = variableOne & 3; 

variable3 &= 3; 

其实这并不重要。

我不明白如何将比特设置为0的过程正在进行。你如何在纸上处理它?

+2

我不明白为什么人们在询问之前不搜索。我想我们必须_both_有东西要学习:-)请参阅http://*.com/questions/1746613/bitwise-operation-and-usage/1746642#1746642 – paxdiablo 2012-03-03 09:05:38

比方说5&3,四位宽:

0101b = 5dec 
0011b = 3dec 
------------ 
0001b = 1dec 

你刚才&的在同一列位。并且由于&运算符在两个参数都为1时仅返回1,因此5中不存在的更高位将被屏蔽。


至于你的榜样来自点评:

$ perl -E 'printf "%b\n", 0x76' 
1110110 

现在:

1110110 = 0x76 
0000011 = 3dec 
------- 
0000010 = 2dec 

...,只是验证:

$ perl -E 'say 0x76&3' 
2 

的模式很简单,你只需&每个柱N:

x 
y 
- 
z 

哪里zx&y


啊哈,根据您在邻近答案中的意见判断问题在别处。数字变量中不包含“十六进制值”。数字变量包含表示数字的位模式。 “数字”不是二进制,十进制或十六进制。当你说“三”时,没有数字系统在起作用,无论如何,三是三。

当您在源代码中说出类似var x = 0x76的东西时,机器会读取数字的十六进制表示形式,并创建一个代表该数字的位模式并将其存储在对应于该变量的存储器中。然后当你说出类似x &= 3的东西时,机器会创建一个代表数字3的位模式,并将其与存储在变量中的位模式组合,并将结果存储在变量中。

+0

哦..是的..谢谢。真的很容易理解。所以现在将练习))) – 2012-03-03 09:03:06

+0

例如:varibleOne = 0x76; variableOne &= 3;它是如何工作的 – 2012-03-03 09:05:47

+0

好吧,明白!感谢您的帮助!!! – 2012-03-03 09:13:39