编程中的移位运算符简单解释
1.<<左移 (又叫算術左移),數字的二進制表示中符號位不進行移位。
例如 10<<2
10的二進制表示是 (機器補碼表示,不會自行百度)0,0000000...00001010(共三十二位,假設機器是32位機器,64位大同小異)
左移2位之后是0,0000000...0000101000 ,換算成十進制就是40. ? 因為【(10*2)*2 = 40】。
例如 (-10)<<2
-10的二進制表示是 1,1111111...11110110(共三十二位,假設機器是32位機器,64位大同小異)
左移2位之后變成1,1111111...1111011000(補碼左移規則請自行百度), 換算成十進制就是-40,所以(-10)<<2 = -40
2.<<<符號左移(又叫邏輯移位),即把數字的二進制表示中符號位不用區別對待。
整數的符號左移和左移是等價的,因為補碼左移時右側都是補0
3.右移>>(又叫算術右移),數字的二進制表示中符號位不進行移位。
例如 10>>2
10的二進制表示是 (機器補碼表示,不會自行百度)0,0000000...00001010(共三十二位,假設機器是32位機器,64位大同小異)
右移2位之后是0,0000000...00000010 ,換算成十進制就是2. ? 因為【(10/2)/2 = 2】。
例如 (-10)>>2
-10的二進制表示是 1,1111111...11110110(共三十二位,假設機器是32位機器,64位大同小異)
右移2位之后變成1,1111111...11111101(補碼右移規則請自行百度), 換算成十進制就是-3,所以(-10)<<2 = -3(這也是為什么 -5/2 = -3 的原因)
4.符號右移>>>(又叫邏輯移位)即把數字的二進制表示中符號位不用區別對待。
例如 10>>>2 (正整數的符號右移同算術右移)
例如 -10>>>2
-10的二進制表示是 1,1111111...11110110(共三十二位,假設機器是32位機器,64位大同小異)
邏輯右移兩位之后是0,011111...11111101,換算成十進制是1073741821 所以(-10)<<<2 = 1073741821
總結
以上是生活随笔為你收集整理的编程中的移位运算符简单解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 12月16号 双链表
- 下一篇: 策略模式(stragegy)