gpt4 book ai didi

java - 负操作数上的有符号右移运算符

转载 作者:行者123 更新时间:2023-12-02 04:37:50 24 4
gpt4 key购买 nike

我正在阅读 Java 规范。这里写的是:

The value of n >> s is n right-shifted s bit positions with sign-extension. The resulting value is floor(n / 2s). For non-negative values of n, this is equivalent to truncating integer division, as computed by the integer division operator /, by two to the power s.

所以如果我有以下内容:

27 >> 3 // 00011011 >> 3 = 00000011 = 3 = 27/8

结果是3;事实上 27/8 = 3.375,因此 3 是被截断的值。

但是当左操作数为负时,规范什么也没说。

所以如果我有以下内容:

-50 >> 2 // 11001110 >> 2 = 11110011 = -13 != -50/4

结果是-13;但 -50/4 = -12.5 因此 -13 并不是被截断的值。

那么当左操作数为负值时,Java 使用什么舍入系统?

也许ceil(n/2s)?

最佳答案

The resulting value is floor(n / 2s).

Floor 表示向下舍入:向负无穷大舍入。这与截断不同,即删除小数部分。截断会导致正数向下舍入,负数向上舍入。

-12.5 的下限是 -13。

Demo.

关于java - 负操作数上的有符号右移运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41186611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com