黑马程序员技术交流社区

标题: 关于进制的转换的基本问题 [打印本页]

作者: 依然AI    时间: 2012-12-18 09:51
标题: 关于进制的转换的基本问题
本帖最后由 依然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);
        }
}



作者: 孙辉辉    时间: 2012-12-18 10:14
因为你前面是一个0,他认为你输入的是八进制数,而println()输出的是十进制数,因此最后打印出来的是72

00000110  读取的是  0000110 即110 按八进制算是72
作者: 依然AI    时间: 2012-12-18 10:33
孙辉辉 发表于 2012-12-18 10:14
因为你前面是一个0,他认为你输入的是八进制数,而println()输出的是十进制数,因此最后打印出来的是72

...

110按八进制算成十进制是6 不是72的
作者: 依然AI    时间: 2012-12-18 10:34
轻松过关 发表于 2012-12-18 10:28
编译器默认将数值以十进制形式输出,如果向输入八进制使用toOctalString函数可以做到。 ...

那我直接打印16位的是可以的   直接打印这个8进制的就不能。。。。  16位的也没有用这个函数
作者: 马铿    时间: 2012-12-18 10:58
0+8^2+8^1+0
=72
作者: 孙辉辉    时间: 2012-12-18 11:02
依然AI 发表于 2012-12-18 10:33
110按八进制算成十进制是6 不是72的

110怎么能是6呢,那是2进制。。。建议看看关于进制转换的,
作者: 董将    时间: 2012-12-18 11:25
看好了进制转换这个问题,有些时候咱们在写明8进制或者2进制的时候看好尾数,你给的这个是按照8进制来计算的
作者: 王玮    时间: 2012-12-18 11:37
  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
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));

    }


作者: 凊係柈泩    时间: 2012-12-18 12:00
十进制表示开头是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));//把当前的二进制转换成十进制
作者: 依然AI    时间: 2012-12-18 12:00
马铿 发表于 2012-12-18 10:58
0+8^2+8^1+0
=72

哦 理解了 谢谢
作者: 依然AI    时间: 2012-12-18 12:01
孙辉辉 发表于 2012-12-18 11:02
110怎么能是6呢,那是2进制。。。建议看看关于进制转换的,

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

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

嗯嗯  谢谢啦  加油 共勉




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