首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >位运算符码

位运算符码
EN

Stack Overflow用户
提问于 2015-09-14 10:30:16
回答 2查看 70关注 0票数 1

我在试着理解按位操作和换挡操作。我编写了一个简单的代码,向我展示一个简短的类型。

代码语言:javascript
运行
复制
    class Shift {
    public static void main (String args[]) {
        short b = 16384;

        for (int t = 32768; t > 0; t = t/2) {
            if ((b&t) !=0) System.out.print("1 ");
            else System.out.print ("0 ");
        }
        System.out.println();
        b = b+2;
        for (long t = 2147483648; t > 0; t = t/2) {
            if ((b&t) != 0) System.out.print ("1 ");
            else System.out.print ("0 ");
        }
        System.out.println();
    }
}

产出如下:

代码语言:javascript
运行
复制
C:\>javac Shift.java
Shift.java:11: error: integer number too large: 2147483648
                for (long t = 2147483648; t > 0; t = t/2) {
                              ^
1 error

我不明白为什么长类型不能保存值2147483648。

谢谢你的帮助。

谢谢你的回答。我改变了密码:

代码语言:javascript
运行
复制
    class Shift {
    public static void main (String args[]) {
        short b = 16384;

        for (int t = 32768; t > 0; t = t/2) {
            if ((b&t) !=0) System.out.print("1 ");
            else System.out.print ("0 ");
        }
        System.out.println();
        b = (short)(b+2);
        for (long t = 2147483648L; t > 0; t = t/2) {
            if ((b&t) != 0) System.out.print ("1 ");
            else System.out.print ("0 ");
        }
        System.out.println();
    }
}

现在的产出是:

代码语言:javascript
运行
复制
C:\>java Shift
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0

为什么第二个“输出”是一个整数?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-14 10:31:37

JLS #3.10.1. Integer Literals称,

如果整数以ASCII字母L或l(Ell)作为后缀,则为long类型;否则为int类型(§4.2.1)。

因此

代码语言:javascript
运行
复制
long t = 2147483648

应该是

代码语言:javascript
运行
复制
long t = 2147483648L

其中L文字告诉编译器它是一个长值。否则,默认情况下编译器将其视为int值。

票数 3
EN

Stack Overflow用户

发布于 2015-09-14 10:31:28

2147483648是一个int文本,它对int来说太大了。将其更改为2147483648L以获得long文本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32562589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档