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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 依然AI 中级黑马   /  2012-12-18 09:51  /  1956 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 依然AI 于 2012-12-18 12:10 编辑

16进制用0x开头
8进制 用0开头 那么10进制的6 八进制为0110
那么研究为什么在程序中打印0110或者00000110  打印出的是72

public class Test {

        public static void main(String[] args) {
                System.out.println(00000110);
        }
}


评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

14 个回复

倒序浏览
因为你前面是一个0,他认为你输入的是八进制数,而println()输出的是十进制数,因此最后打印出来的是72

00000110  读取的是  0000110 即110 按八进制算是72
回复 使用道具 举报
编译器默认将数值以十进制形式输出,如果向输入八进制使用toOctalString函数可以做到。
回复 使用道具 举报
孙辉辉 发表于 2012-12-18 10:14
因为你前面是一个0,他认为你输入的是八进制数,而println()输出的是十进制数,因此最后打印出来的是72

...

110按八进制算成十进制是6 不是72的
回复 使用道具 举报
轻松过关 发表于 2012-12-18 10:28
编译器默认将数值以十进制形式输出,如果向输入八进制使用toOctalString函数可以做到。 ...

那我直接打印16位的是可以的   直接打印这个8进制的就不能。。。。  16位的也没有用这个函数
回复 使用道具 举报
0+8^2+8^1+0
=72
回复 使用道具 举报
依然AI 发表于 2012-12-18 10:33
110按八进制算成十进制是6 不是72的

110怎么能是6呢,那是2进制。。。建议看看关于进制转换的,
回复 使用道具 举报
董将 中级黑马 2012-12-18 11:25:04
8#
看好了进制转换这个问题,有些时候咱们在写明8进制或者2进制的时候看好尾数,你给的这个是按照8进制来计算的
回复 使用道具 举报
王玮 中级黑马 2012-12-18 11:37:17
9#
  1. public void println(int x) {
  2.         synchronized (this) {
  3.             print(x);
  4.             newLine();
  5.         }
  6.     }
  7.   /**
  8.      * Prints an integer.  The string produced by <code>{@link
  9.      * java.lang.String#valueOf(int)}</code> is translated into bytes
  10.      * according to the platform's default character encoding, and these bytes
  11.      * are written in exactly the manner of the
  12.      * <code>{@link #write(int)}</code> method.
  13.      *
  14.      * @param      i   The <code>int</code> to be printed
  15.      * @see        java.lang.Integer#toString(int)
  16.      */
  17.     public void print(int i) {
  18.         write(String.valueOf(i));
  19.     }
  20.   /**
  21.      * Returns the string representation of the <code>int</code> argument.
  22.      * <p>
  23.      * The representation is exactly the one returned by the
  24.      * <code>Integer.toString</code> method of one argument.
  25.      *
  26.      * @param   i   an <code>int</code>.
  27.      * @return  a string representation of the <code>int</code> argument.
  28.      * @see     java.lang.Integer#toString(int, int)
  29.      */
  30.     public static String valueOf(int i) {
  31.         return Integer.toString(i, 10);
  32.     }
  33.   * @param   radix   the radix to use in the string representation.
  34.      * @return  a string representation of the argument in the specified radix.
  35.      * @see     java.lang.Character#MAX_RADIX
  36.      * @see     java.lang.Character#MIN_RADIX
  37.      */
  38.     public static String toString(int i, int radix)
复制代码
其实,输出的是 转化成十进制的字符串。
回复 使用道具 举报
王玮 中级黑马 2012-12-18 11:48:01
10#
Prints an integer.  The string produced by    打印一个整数。由java.lang.String valueOf(int ) 产生的字符串,被转换成平台默认字符编码的二进制数,这些二进制数用write(int) 方法被写出。

     * java.lang.String#valueOf(int)  is translated into bytes

     * according to the platform's default character encoding, and these bytes

     * are written in exactly the manner of the

     * <code>{@link #write(int)}</code> method.

     *

     * @param      i   The <code>int</code> to be printed

     * @see        java.lang.Integer#toString(int)

     */

    public void print(int i) {

        write(String.valueOf(i));

    }

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
十进制表示开头是0-9,八进制 0-7 用0开头,原因是0110标准输出流判断是八进制数据,标准输出流获取数据后转换成了十进制,所以看到的就是72,包括十六进制的数据,如果想获取进制转换还可以通过包装类的方法操作
比如十进制转换其他进制
System.out.println(Integer.toBinaryString(60));//把当前参数转换成二进制表现形式
System.out.println(Integer.toHexString(60));//把当前参数转换成十六进制表现形式
System.out.println(Integer.toOctalString(60));把当前参数转换成八进制表现形式
其他进制转换十进制
System.out.println(Integer.parseInt("1101",2));//把当前的二进制转换成十进制

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
马铿 发表于 2012-12-18 10:58
0+8^2+8^1+0
=72

哦 理解了 谢谢
回复 使用道具 举报
孙辉辉 发表于 2012-12-18 11:02
110怎么能是6呢,那是2进制。。。建议看看关于进制转换的,

哦 理解了 谢谢  那个0110是按8进制表示了 其实我换算是用2进制换算了  知道了 谢谢了   还有问你一句  你的技术分怎么获得的呢   能不能传授点经验 想赶上这个班  有什么快速能获得的经验呢  估计咱们会是同学。。。
回复 使用道具 举报
依然AI 发表于 2012-12-18 12:01
哦 理解了 谢谢  那个0110是按8进制表示了 其实我换算是用2进制换算了  知道了 谢谢了   还有问你一句   ...

我也在努力,但是很紧张,看样子你的10个博客还没交。
技术分就是多花点时间在论坛上,回答回答别人的问题
回复 使用道具 举报
孙辉辉 发表于 2012-12-18 12:08
我也在努力,但是很紧张,看样子你的10个博客还没交。
技术分就是多花点时间在论坛上,回答回答别人的问 ...

嗯嗯  谢谢啦  加油 共勉
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马