以前在面试的时候遇到过移位运算的相关知识,当时对它没有任何的了解,所以...... 后来在网上查过一些资料、也翻阅过一些书籍、也问过老师和同学,他们都是长篇大论(洋洋万言)听得糊里糊涂。以下是我的一些总结,不知正确与否,希望高手多多指教!!
*****左移位运算符*****
将一个数左移1位,相当于将该数乘以2;
左移2位相当于将该数乘以4,即左边数乘以2的右边数幂的积
eg. 9<<3 的结果是:72 相当于9*2*2*2
*****右移位运算符*****(两边都是正数)
将一个数带符号右移1位,相当于将该数除以2(忽略余数);
带符号右移2位,相当于将该数除以4,即左边数除以2的右边数幂的商
eg. 9>>1 的结果是:4 相当于9/2(忽略余数)
当左边的数字小于右边的数时,结果为0(两边都是正数)
当左边的数小于0时,结果为:左边数的绝对值除以2的右边数幂的商的相反数-1
eg. -9>>2的结果是:-3 相当于-(9/(2*2))-1
当左边的数小于0时,且它的绝对值比右边的数还小时,结果为-1