Binary 关于掩蔽位的澄清
我有一个关于屏蔽位的快速问题。如果我想打开两个8位流,我需要吗 针对以下两种情况使用Binary 关于掩蔽位的澄清,binary,bitmask,Binary,Bitmask,我有一个关于屏蔽位的快速问题。如果我想打开两个8位流,我需要吗 针对以下两种情况使用和逻辑: 10101010 AND 01101001 ________ 00101000 或者我真的要改变流中的一个位来打开这些位吗?我想我的问题是,当我打开(使用和)或关闭(使用或)时,我是否确实更改了任何位,或者只是使用和/或逻辑比较这两个位?其他,如果我错了,请纠正我: 要打开8位流中的第4位,您可以使用或00001000逻辑比较8位流 要关闭8位流中的第4位,您需要使用和
和
逻辑:
10101010
AND 01101001
________
00101000
或者我真的要改变流中的一个位来打开这些位吗?我想我的问题是,当我打开(使用<代码>和<代码>)或关闭(使用<代码>或<代码>)时,我是否确实更改了任何位,或者只是使用<代码>和/或<代码>逻辑比较这两个位?其他,如果我错了,请纠正我: 要打开8位流中的第4位,您可以使用
或00001000
逻辑比较8位流
要关闭8位流中的第4位,您需要使用和11110111
对8位流进行比较
要使用异或逻辑切换位,请使用11111111
。其他,如果我错了,请纠正我:
要打开8位流中的第4位,您可以使用或00001000
逻辑比较8位流
要关闭8位流中的第4位,您需要使用和11110111
对8位流进行比较
要切换位,可以使用11111111
使用XOR
逻辑。我不确定在这种情况下“流”是什么意思
在大多数语言中,除了二进制操作外,还必须有赋值
也就是说,你通常会有
foo = get_byte() // Call some function to get the original value of foo
foo = foo AND 11110111 // Replace foo with the result of the AND, which
// in this case will turn off the 4th bit, and leave
// the other bits unchanged
最后一行将foo的内容替换为二进制操作的结果我不确定在这种情况下“streams”是什么意思
在大多数语言中,除了二进制操作外,还必须有赋值
也就是说,你通常会有
foo = get_byte() // Call some function to get the original value of foo
foo = foo AND 11110111 // Replace foo with the result of the AND, which
// in this case will turn off the 4th bit, and leave
// the other bits unchanged
最后一行用二进制运算的结果替换foo的内容要启用(1),可以在要启用的位置使用OR运算符和1,因为无论流中的原始值是什么,结果都将启用
00000000 // whatever the values in the input
OR 00000001 // 'OR' turns on the last position in the stream
---------
00000001
要关闭(0),您可以在要关闭的位置使用AND运算符和0,因为无论输入流中的原始值是多少,结果都是关闭的
11111111 // whatever the values here
AND 11111110 // turns off the last position in the stream
---------
11111110
要启用(1),可以在要启用的位置使用OR运算符和1,因为无论流中的原始值是什么,结果都将启用
00000000 // whatever the values in the input
OR 00000001 // 'OR' turns on the last position in the stream
---------
00000001
要关闭(0),您可以在要关闭的位置使用AND运算符和0,因为无论输入流中的原始值是多少,结果都是关闭的
11111111 // whatever the values here
AND 11111110 // turns off the last position in the stream
---------
11111110
“打开”是什么意思?你使用这个词的方式显示了一个深刻的误解,或者是一个不标准的用法。我想我只需要一点流(比如10101010)通过添加一个01010101并将这两个放在and或or逻辑中来更改第4位?我认为“000011000”打开第4位,“11110111”关闭第4位?与00001100的ANDing关闭除第4位以外的所有位。如果第4位为0,则保持为0,如果为1,则保持为1。如果您觉得混淆,请将和的真值表应用于各个位。您所说的“打开”是什么意思?你使用这个词的方式显示了一个深刻的误解,或者是一个不标准的用法。我想我只需要一点流(比如10101010)通过添加一个01010101并将这两个放在and或or逻辑中来更改第4位?我认为“000011000”打开第4位,“11110111”关闭第4位?与00001100的ANDing关闭除第4位以外的所有位。如果第4位为0,则保持为0,如果为1,则保持为1。如果您觉得混淆,请将和的真值表应用于各个位。该XOR
将切换“流”中的每个位。@Sapph,是的,正确。因此,如果我想打开一个特定的位,我将使用00000001
(将我们与这个steam进行比较的第一个位放入和
逻辑场景中,但我也可以在比较两个位流时使用此方法(不尝试打开/关闭一个位)?否,异或逻辑将不会产生预期的“切换”结果。XOR
将切换“流”中的每一位。@Sapph,是的,正确。因此,如果我想打开一个特定的位,我将使用00000001
(将我们与这个steam进行比较的第一个位放入和
逻辑场景中,但我也可以在比较两个位流时使用此方法(不尝试打开/关闭一个位)?否,异或逻辑不会产生预期的“切换”结果。