很多人提問,不知道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...