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

在Java中使用零填充运算符的右移(>>>)只使用“int”而不是“byte”

巫马淳
2023-03-14
class First
{
        public static void main(String[] args)
        {
                int b = -1;
                int c = b>>>2;
                System.out.println(b);
                System.out.println(c);
        }
}
-1
1073741823
class First
{
        public static void main(String[] args)
        {
                byte b = -1;
                byte c = (byte)(b>>>2);
                System.out.println(b);
                System.out.println(c);
        }
}
-1
-1
-1
63 

共有1个答案

慕容劲
2023-03-14

在每个操作之前,Java将byte、short或char操作数(变量或常量)转换为int。然后在操作执行后。

byte b = 2, c = 3;
byte d = b * c; //Compilation error

在乘法运算之前,b和c都用int进行转换。所以结果是int。我们试图将int存储在字节d中,这导致编译错误。

同样的情况也发生在移位操作符上。

int c = b>>>2;
 类似资料:
  • 抱歉,如果这个问题已经提出,我已经做了深入的搜索,什么都没有。 现在,我知道: 会在左边用0填充我的价格,所以25的价格会导致00025 如果我想把它们垫在右边,结果是25000呢?如何仅使用String.format模式?

  • 问题内容: 在将其标记为重复项之前,请阅读以下内容,并检查 我的代码 * 我更新的代码! 所以我的问题是,我必须实现Java / JavaScript’>>>’(无符号右移/零填充右移),但是我无法以完全相同的方式工作。 我选择了在SO和Web上找到的11个最有前途的实现(链接在代码中作为注释添加),并添加了一些测试用例。不幸的是 无 功能返回的Java / JS相同响应的测试ALL。 (也许其中

  • 在我的系统中,在二进制(十进制255)中是(预期是8位字符)1111 1111。 类似地,如预期的0111 1111。左边填满了一个零。 是预期的1000 0000。 例如,现在我想生成未签名的字符0010 0000。 我尝试了,但输出1110 0000....怎么了?为什么左边突然被一个塞满了? 如何生成启用第N位(从左侧开始)的? 我想 此刻,正在给我 对于、存在此问题,但对于或更高版本不再发

  • 问题内容: 但是我没有得到如何用零填充字符串。 输入:“ 129018”输出:“ 0000129018” 总输出长度应为TEN。 问题答案: 如果你的字符串仅包含数字,则可以将其设为整数,然后进行填充:

  • 我想要的是Hibernate生成1条语句删除所有子级的方法,而不是每个子级1条语句。 如果实体a和B之间存在关系,其中a是父对象,B可以是多个子对象。如果我在实体关系上使用注释,如OrphanRemoving或OnCascade delete,那么当我删除父对象时,自动生成的sql会显示 我想让Hibernate做的是生成SQL 是否有一个注释或设置我可以用来轻松做到这一点? 我觉得我不是第一个遇

  • 问题内容: 抱歉,如果已经提出此问题,我已经进行了深入搜索,什么也没有。 现在,我知道: 会将我的价格填充到左侧的零,因此价格为25将得出 00025 如果我想将它们向右填充,结果是 25000 怎么办?我该如何 仅 使用 String.format 模式呢? 问题答案: 您可以使用: 我可以只使用格式模式吗? 就像方法一样使用。从这篇文章中,您将看到输出空间是硬编码的,因此必须使用。