您的位置:首页 > 编程语言 > Java开发

java 位运算中移动位数超过数据长度和右移的两种不同方式

2017-04-27 14:24 417 查看
记录 java 位运算中的两点注意事项:移动位数超过数据长度和右移的两种不同方式。

int、long类型数据移动等于或超过最大位数

在 java 中,int 类型的数据长度为 32 位,如果将 int 类型左移或者右移大于或等于 32 位时,并不会像预计的那样将数据全部填充为1或0。java 的处理方式是:当刚好为数据长度的整数倍时,即32、64······,数据保持原来不变;其他情况下移动除以 32 余数的长度。同理 long 类型数据以 64 为变化基准。

在实际应用中,需要特别注意这点,当然也可以巧用此特性实现一些特殊算法的设计。

算术右移、逻辑右移、无符号右移

在 java 中左移只有一种,以0补齐低位,运算符号为 <<。而又移分为两种:算术右移 >> 和逻辑右移 >>>,其中逻辑右移也叫作无符号右移。

逻辑右移以0补全高位,而算术右移则是根据数据的第一位决定右移后高位补全的内容,若为1则补1,否则补0。

==========================================

疑问?帮助?批评?欢迎评论 | QQ:593159978
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: