栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java移位是循环的吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java移位是循环的吗?

移位不是循环的;对于

int
s 移位,Java仅使用5个最低有效位,因此
(b << 0)
等效于
(b << 32)
(等效于
(b <<64)
等)。您可以简单地求出移位量,然后除以32的余数。

移位

long
s 也会发生类似的情况,其中Java仅使用6个最低有效位,因此
(aLong << 0)
等效于
(aLong << 64)

JLS的第15.19节谈到了这一点:

如果左侧操作数的提升类型为int,则 将右侧操作数的 最低5位
用作移位距离。就像右侧操作数受到掩码值0x1f(0b11111)的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到31(含)范围内。

如果左侧操作数的提升类型很长,则 将右侧操作数 的六个最低位
用作移位距离。就像右侧操作数受到掩码值0x3f(0b111111)的按位逻辑AND运算符&(§15.22.1)一样。因此,实际使用的移动距离始终在0到63之间(包括0和63)。

(强调我的)

(你不能位移位

float
S或
double
S,并试图位移
short
byte
将受到价值 一元数值提升 到一个
int
反正。)

0
来自
16 << 30
,因为1位来自
16

00000000 00000000 00000000 00010000

从的结尾移开

int
并被丢弃。

// Discarded - Result-----------------------------  (00000100)   00000000 00000000 00000000 00000000


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438054.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号