乙個例子理解C 位移

2021-09-08 15:51:43 字數 1104 閱讀 9401

很多人提問,不知道c#位移,可能有些人在面試中也遇到過

其實很簡單。。。

c#位移運算子

左移:<<

右移:>>

位移理解可能簡單一些:其實

就是資料轉換成二進位制的左右移動;

右移左補0,左移右補0,後面多出來的部分去掉。

用乘除法去理解位移也可以:

左位移:相當於乘

左移1位相當於乘2,左移2位相當於乘4,左移3位相當於乘8,左移4位相當於乘16...類推

右位移:相當於除

右移1位相當於除2,右移2位相當於除4,右移3位相當於除8,右移4位相當於除16...類推

下面用乙個曾經回答乙個網友的提問來理解一下位移的運算

題目:把89右位移一位:

string flag = convert.tostring(89, 2); //

這是把你的89轉為2進製數。。

//flag結果:1011001

//你要右位移,左邊補個0,後面多出來一位去掉

int j = convert.toint32("

0101100

", 2); //

再把2進製轉化了10進製數。。

//結果:44

//位移就是這麼簡單

這樣理解位移運算就很容易...

補充:向右移位運算子在帶符號整數型別的作業系統的不同而不同,在一些情況下,右位移左補0;其它情況下,右位移左補1

int i = -128

;string flag = convert.tostring(i, 2

);i >>= 2

;string flag2 = convert.tostring(i, 2

);//

結果://

-128的二進位制: 11111111111111111111111110000000

//-128右位移2位後的值: -32

//-128右位移2位後的二進位制:11111111111111111111111111100000

乙個例子理解C 位移

來自 很多人覺得位移這東西很複雜,二進位制一堆0 1看不懂。其實很簡單。位移理解可能簡單一些 其實位移就是資料轉換成二進位制的左右移動 右移左補0,左移右補0,後面多出來的部分去掉。用乘除法去理解位移也可以 左位移 相當於乘 左移1位相當於乘2,左移2位相當於乘4,左移3位相當於乘8,左移4位相當於...

C 多型的乙個例子

class a virtual void f2 static void f3 virtual void f4 class b virtual void f2 static void f3 virtual void f4 int main 執行結果 a f1 b f1 a f3 b f2 分析 類的成...

乙個例子讓你理解Generator語法

function foo let generator foo 返回迭代器例項 指標物件 console.log generator.next 111 console.log generator.next aaaa console.log generator.next console.log gene...