今天寫乙個比較有意思的東西 -- c#移位運算(左移和右移)。
c#是用<>(右移) 運算子是用來執行移位運算。
左移 (<
將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。
左移相當於乘.左移一位相當於乘2;左移兩位相當於乘4;左移三位相當於乘8。
x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16
同理,右移即相反:
右移 (>>)
將第乙個運算元向右移動第二個運算元所指定的位數,空出的位置補0。
右移相當於整除.右移一位相當於除以2;右移兩位相當於除以4;右移三位相當於除以8。
x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4=x/16
當宣告過載c#移位運算子時,第乙個運算元的型別必須總是包含運算子宣告的類或結構,並且第二個運算元的型別必須總是 int,如:
classprogram << 2 結果是:
", shift1.vala, shift2.vala); console.writeline(
" << 2 結果是:
", shift1.valb,shift2.valb); console.writeline(
" >> 2 結果是:
", shift1.vala, shift3.vala); console.writeline(
" >> 2 結果是:
", shift1.valb, shift3.valb); console.readline(); }
public
class
shiftclass
public
static
shiftclass
operator
<<
(shiftclass shift,
intcount)
public
static
shiftclass
operator
>>
(shiftclass shift,
intcount) } }
以上表示式,輸出結果是:
因為位移比乘除速度快.對效率要求高,而且滿足2的冪次方的乘除運方,可以採用位移的方式進行。
比較有意思吧?
C 移位運算 左移和右移
c 是用 右移 運算子是用來執行移位運算。左移 將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。左移相當於乘.左移一位相當於乘2 左移兩位相當於乘4 左移三位相當於乘8。x 1 x 2 x 2 x 4 x 3 x 8 x 4 x 16 同理,右移即相反 右移 將第乙個運算元向右移動第二...
C 移位運算 左移和右移
c 是用 右移 運算子是用來執行移位運算。左移 將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。左移相當於乘.左移一位相當於乘2 左移兩位相當於乘4 左移三位相當於乘8。x 1 x 2 x 2 x 4 x 3 x 8 x 4 x 16 同理,右移即相反 右移 將第乙個運算元向右移動第二...
C 移位運算 左移和右移
今天寫乙個比較有意思的東西 c 移位運算 左移和右移 c 是用 右移 運算子是用來執行移位運算。左移 將第乙個運算元向左移動第二個運算元指定的位數,空出的位置補0。左移相當於乘.左移一位相當於乘2 左移兩位相當於乘4 左移三位相當於乘8。x 1 x 2 x 2 x 4 x 3 x 8 x 4 x 1...