位操作符
. 位操作符在shell
指令碼中極少使用
。它們最主要的用途看起來就是操作和test
從sockets
中 讀出的變數."bit flipping"
與編譯語言的聯絡很緊密
,比如c/c++
,在這種語言中它可以
執行得足夠快.(
原文有處
on the fly
,我查了一下
,好像是沒事幹的意思
,沒理解
) << 左移1
位(每次左移都將乘
2) <<=
左移幾位,=
號後邊將給出左移幾位
let "var <<= 2"
就是左移2位
(就是乘
4) >> 右移1
位(每次右移都將除
2) >>=
右移幾位
&
按位與
&=
按位與賦值
|
按位或
|=
按位或賦值
~
按位非
!
按位否?(
沒理解和上邊的
~有什麼區別?),
感覺是應該放到下邊的邏輯操作中
^
按位異或
xor
^=
異或賦值
邏輯操作
: &&
邏輯與
1 if [ $condition1 ] && [ $condition2 ]
2 #
與: if [ $condition1 -a $condition2 ]
相同 3 #
如果condition1
和condition2
都為true
,那結果就為
true.
4 5 if [[ $condition1 && $condition2 ]] #
也可以.
6 #
注意&&
不允許出現在
[ ... ]中.
注意:&&
也可以用在
and list中(
見25章)
,但是使用的時候需要依賴上下文
. ||
邏輯或
1 if [ $condition1 ] || [ $condition2 ]
2 #
與: if [ $condition1 -o $condition2 ]
相同 3 #
如果condition1
或condition2
為true
,那結果就為
true.
4 5 if [[ $condition1 || $condition2 ]] #
也可以
6 #
注意||
不允許出現在
[ ... ]中.
注意:bash
將test
每個連線到邏輯操作的狀態的退出狀態
. 例:
if [ "$a" -eq 24 ] && [ "$b" -eq 47 ]
與if [ "$a" -eq 24 -a "$b" -eq 47 ]
得到同一結果。
a=1let "a=a|0x4"
echo $a
if [ $((a|0x4)) -eq 5 ];then
echo "ada"
fi原文:
c語言操作符 位操作符 移位操作符
1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...
位運算操作符
與運算,二元操作符,對兩個操作員的每個二進位制位進行與運算,運算規則為 1 1 1 1 0 0 0 1 0 0 0 0 異或運算,二元操作符,對兩個操作員的每個二進位制位進行異或運算,運算規則為 1 1 0 1 0 1 0 1 1 0 0 0 或運算,二元操作符,對兩個操作員的每個二進位制位或運算,...
c 位操作符
我們知道,任何資訊在計算機中都是以二進位制的形式儲存的。位操作符就是對資料按二進位制進行運算的操作符。c 語言中的位操作符有 與 或 異或 取補 左移 右移 其中,取補只有乙個運算元,而其它的位操作符都有兩個運算元。這些運算都不會產生溢位。位操作符的運算元為整型或者是可以轉換為整型的任何其它型別。與...