我有一個關於掩蔽比特的快速問題。如果我想打開兩個8位流上,做我關於掩蔽比特的說明
使用對兩個AND
邏輯:
10101010
AND 01101001
________
00101000
還是我實際更改流中的位中的一個打開的位上?我想我的問題是當我打開(使用AND
)或關閉(使用OR
)時,我是否實際更改任何位,或僅使用AND/OR
邏輯比較兩個位?
我有一個關於掩蔽比特的快速問題。如果我想打開兩個8位流上,做我關於掩蔽比特的說明
使用對兩個AND
邏輯:
10101010
AND 01101001
________
00101000
還是我實際更改流中的位中的一個打開的位上?我想我的問題是當我打開(使用AND
)或關閉(使用OR
)時,我是否實際更改任何位,或僅使用AND/OR
邏輯比較兩個位?
其他人,糾正我,如果我錯了:
要打開在一個8位的第4位流,你會使用使用00001000
的OR
邏輯比較8位流。
要關閉8位數據流中的第4位數據,您可以使用11110111
使用AND
邏輯來比較8位數據流。
要使用邏輯XOR
來切換使用11111111
的位。
'XOR'會切換「流」中的每一位。 – Sapph 2010-02-12 00:25:15
@Sapph,是的。所以如果我想打開一個特定的位,我會使用'00000001'(把這個放在我們正在比較的這個蒸汽的第一個位)放到AND邏輯場景中,但是我也可以使用這個方法來比較兩個比特流(不試圖打開/關閉一個單一的位)? – HollerTrain 2010-02-12 00:28:00
不,異或邏輯不會有預期的「切換」結果。 – 2011-05-16 18:41:54
我不確定你在這種情況下'流'的含義。
在大多數語言中,你將不得不有一個任務以及二進制操作。
這是你通常會碰到這樣的
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,因爲無論流中的原始值,其結果會是什麼ON
00000000 // whatever the values in the input
OR 00000001 // 'OR' turns on the last position in the stream
---------
00000001
關掉(0),您可以在想要關閉的位置使用AND運算符,因爲無論輸入流中的原始值如何,結果都將爲OFF。
11111111 // whatever the values here
AND 11111110 // turns off the last position in the stream
---------
11111110
你是什麼意思「打開」?您使用該術語的方式顯示出嚴重的誤解或非標準用法。 – 2010-02-12 00:05:20
我想我只需要一點點流(比如說10101010)並通過添加一個01010101並將這兩個放入AND和OR邏輯來更改第4位? – HollerTrain 2010-02-12 00:08:48
我認爲'00001000'打開第4位,'11110111'關閉第4位? – HollerTrain 2010-02-12 00:13:54