逍遥游

123 vs 0123 vs 0x123

问题

问一个问题,123==0123==0x123 ?

第一次看到这个问题的时候,基本上是不假思索地给出了前一个等号成立而后一个不成立的结论。但是答案却是它们都是错的,这三个数各不相等!不信?那就自己试试吧。

如果你真的去尝试了,会发现 123还是123,但是0123会等于83,0x123等于291。当然,第一个和最后一个(16进制)我们不会有什么疑问,但是第二个真的令人费解。猜测一下,为什么。

公布答案:
123 =11010+2*10+3=123

0123 =188+2*8+3=83

0x123 =11616+2*16+3=291
看见了吧,原因在于他们属于不同的进制。

可是为什么0123=83 ,被认定为八进制呢?这跟常理不合啊,还有,八进制不是用o么,怎么是零?

解释

实际上,都可以,0和o长得很像,容易被混淆,况且一般也不会有人在写十进制的时候加上前导零,索性就都定义为八进制。

看来,什么事都不能想当然,还是要多学,多实践才行啊。


多说停止服务,disqus引导注册太过分,暂时不上评论系统了。有机会自己造轮子吧。邮箱:input@newnius.com