当前位置: 首页 > 知识库问答 >
问题:

对于>>操作符,我得到这个意外结果的原因是什么?[副本]

何勇
2023-03-14

我有一个长的是用这个代码制作的:

long binary = 0b1L<< 63;

这给出了第63个索引的预期结果:

1000000000000000000000000000000000000000000000000000000000000000

但是当我花这么长时间,并应用

long newBinary = binary >>8;

它将右移正确的量,但将前导零填充为1:

1111111110000000000000000000000000000000000000000000000000000000

发生这种情况的具体原因是什么?

共有1个答案

夏高朗
2023-03-14

<代码>

步骤:

1000000000000000000000000000000000000000000000000000000000000000

右移8个位置:

000000001000000000000000000000000000000000000000000000000000000

用原始符号位(1)填充左侧的移位位:

111111111000000000000000000000000000000000000000000000000000000

另请参阅:按位和位移位运算符

 类似资料:
  • 它看起来有点像三元。要不是这样,我就会期望: 也许这是速记,但找到一个链接来确认是困难的。我在php4遗留代码中找到了这个片段。 (注意这是php而不是c#)

  • 我运行了几个测试场景,其中我从SOAP客户端调用远程系统的SOA服务,并遇到了各种远程异常。你能帮我确定每个错误意味着什么吗- 1) java.net网站。ConnectException:连接被拒绝“ 2)Java . net . socket time out异常:连接超时" 3) 连接异常: 连接超时”

  • 我不理解如何使这段代码在Java7中工作 这个符号在Java中到底是什么意思? 如果Java7不支持它,如何改变它,使它能够正常工作。

  • 考虑下面的代码。 我理解在这里工作的等号操作符,因为我们隐式地转换为对象,等号操作符正在检查两者的引用是否相等并返回false。 但我对第二个问题感到困惑,返回true看起来像是调用字符串类型提供的Equals override实现,如果它们相等,它会检查字符串的内容。 我的问题是,为什么它也不检查运算符的内容平等性,它们的实际类型是string而不是object。正当 而下面的代码为两者输出tu

  • 我是Typescript和JavaScript的初学者,试图理解代码。我在代码中的几个地方遇到“<>”,如下例所述。 为什么我们在Typescript中使用“<>”。 谢谢