黑马程序员技术交流社区

标题: 关于位移运算符的问题。。搞不懂 [打印本页]

作者: twa42    时间: 2015-6-3 17:12
标题: 关于位移运算符的问题。。搞不懂
各位兄弟姐妹,小弟碰到了一个问题,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

求解释!!
作者: 小骆驼    时间: 2015-6-3 17:42
111是十进制数,而0111是八进制数,0开头的是八进制数 ,0x开头的是16进制数,“0111”转换成十进制是73,所以当然不一样了
作者: twa42    时间: 2015-6-4 09:21
小骆驼 发表于 2015-6-3 17:42
111是十进制数,而0111是八进制数,0开头的是八进制数 ,0x开头的是16进制数,“0111”转换成十进制是73, ...

哦,原来这样~谢谢你啊!再上网查了下转换的问题,基本懂了:handshake
作者: tougboy    时间: 2015-6-4 09:29
路过 学习
作者: 小骆驼    时间: 2015-6-4 12:15
twa42 发表于 2015-6-4 09:21
哦,原来这样~谢谢你啊!再上网查了下转换的问题,基本懂了

共同进步
作者: 熊乾坤    时间: 2015-6-4 13:17
学习。。
作者: 少年闰土    时间: 2015-6-4 13:31
如一楼所说0111被编译器解释为八进制数,而111被解释为十进制,左移两位相当于乘以4(2*2),73*4=292, 111*4=444
作者: Tangtang    时间: 2015-6-4 13:52
学习了~~
作者: forTomorrow    时间: 2015-6-4 14:24
少年闰土 发表于 2015-6-4 13:31
如一楼所说0111被编译器解释为八进制数,而111被解释为十进制,左移两位相当于乘以4(2*2),73*4=292, 111 ...

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

谢谢指教:handshake
作者: wangkai    时间: 2015-6-4 16:57
学习学习




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2