C 移位運算 左移和右移

2021-08-26 10:24:23 字數 1277 閱讀 3142

今天寫乙個比較有意思的東西 -- 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,如:

class

program << 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...