A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

各位兄弟姐妹,小弟碰到了一个问题,111跟0111左移2位,答案是不一样的吗?
譬如代码如下:
class bitTest{
        public static void main(String[] args){
                System.out.println("0111<<2等于"+(0111<<2));

                System.out.println("111<<2等于"+(111<<2));
        }
}

答案就是:
0111<<2等于292
111<<2等于444

求解释!!

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

10 个回复

倒序浏览
111是十进制数,而0111是八进制数,0开头的是八进制数 ,0x开头的是16进制数,“0111”转换成十进制是73,所以当然不一样了
回复 使用道具 举报
小骆驼 发表于 2015-6-3 17:42
111是十进制数,而0111是八进制数,0开头的是八进制数 ,0x开头的是16进制数,“0111”转换成十进制是73, ...

哦,原来这样~谢谢你啊!再上网查了下转换的问题,基本懂了:handshake
回复 使用道具 举报
路过 学习
回复 使用道具 举报
twa42 发表于 2015-6-4 09:21
哦,原来这样~谢谢你啊!再上网查了下转换的问题,基本懂了

共同进步
回复 使用道具 举报
学习。。
回复 使用道具 举报
如一楼所说0111被编译器解释为八进制数,而111被解释为十进制,左移两位相当于乘以4(2*2),73*4=292, 111*4=444
回复 使用道具 举报
学习了~~
回复 使用道具 举报
少年闰土 发表于 2015-6-4 13:31
如一楼所说0111被编译器解释为八进制数,而111被解释为十进制,左移两位相当于乘以4(2*2),73*4=292, 111 ...

回答的不错
回复 使用道具 举报
少年闰土 发表于 2015-6-4 13:31
如一楼所说0111被编译器解释为八进制数,而111被解释为十进制,左移两位相当于乘以4(2*2),73*4=292, 111 ...

谢谢指教:handshake
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马