Java 移位运算符只能用于整型,不能用于浮点型。也就是说,>>、>>>和<<这 3 个移位运算符并不适合所有的数值类型,它们只适合对 byte、short、char、int 和 long 等整型数进行运算。除此之外,进行移位运算时还有如下规则:
- 对于低于 int 类型(如 byte、short和 char)的操作数来说,总是先自动类型转换为 int类型后再移位。
- 对于 int 类型的整数移位,例如 a >> b,当 b > 32 时,系统先用 b 对 32 求余(因为 int 类型只有 32 位),得到的结果才是真正移位的位数。例如,a >> 33 和 a >> l 的结果完全一样,而 a >> 32 的结果和 a 相同。
- 对 long 类型的整数移位时,例如 a >> b,当 b > 64 时,总是先用 b 对 64 求余(因为 long 类型是 64 位),得到的结果才是真正移位的位数。 当进行位移运算时,只要被移位的二进制码没有发生有效位的数字丢失现象(对于正数而言,通常指被移出的位全部都是 0),不难发现左移 n 位就相当于乘以 2n,右移则相当于除以 2n。这里存在一个问题:左移时,左边舍弃的位通常是无效的,但右移时,右边舍弃的位常常是有效的,因此通过左移和右移更容易看出这种运行结果,并且位移运算不会改变操作数本身,只是得到一个新的运算结果,原来的操作数本身是不会改变的。
标签:右移,限制,int,32,左移,运算符,64,移位 来源: https://www.cnblogs.com/sakura579/p/13844216.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。