2 riyuocr riyuocr 于 2016.03.28 23:03 提问

java-输出给定整数i的二进制补码

高手好!
我刚开始学习java,学完“结构化程序设计”章节后,遇到了一道题,如下:“完成下面的通用程序,要求能够输出给定整数i的二进制补码。
public class Example
{
public static void main(String args[])
{
int i=10;
//在这里,请写上尚未完成的程序,使得本程序在执行时能输出i的二进制补码
}
}
在网上找到一个方法是使用语句System.out.println(Integer.toBinaryString(i));
但是integer和binary string还没有在本章及之前的章节中出现过,所以想请教高手是否还有其他方法啊?谢谢啦!!!

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.29 06:18
 /* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void foo(int i)
    {
        if (i == 0) return;
        foo(i / 2);
        System.out.print(i % 2);
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        int i = 10;
        if (i > 0) foo(i);
        if (i == 0) System.out.print(0);
        if (i < 0) foo(i + 2147483647 + 1);
    }
}
caozhy
caozhy 回复riyuocr: 什么自动排列?
一年多之前 回复
riyuocr
riyuocr 回复riyuocr: foo (i/2) System.out.print(i%2)求模我知道,但是求模后字符10能自动排列吗?
一年多之前 回复
riyuocr
riyuocr 谢谢您的回答!foo (i/2
一年多之前 回复
caozhy
caozhy   Ds   Rxr 2016.03.29 06:20

http://ideone.com/vU6Bt1

(正数的补码直接转换为二进制,负数的,先加上2^(N-1)再变二进制,对于32bit来说,N=32)

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.29 06:43
   这个是jdk提供的api,提前了解下呗Integer是int的包装类,封装了很多实用的数值操作方法。像这个转换二进制的方法,我们就可以直接调用就好了啊,很方便的。至于实现过程,你按下F3跟踪下源码
riyuocr
riyuocr 谢谢!
一年多之前 回复
luochoudan
luochoudan   Ds   Rxr 2016.03.29 00:10

不要局限章节吧,学前班还要念一年级的书磊。正数的原码反码补码都一样,最快的方法就是Integer.toBinaryString()

riyuocr
riyuocr 我主要是想联系一下知识点
一年多之前 回复
devmiao
devmiao   Ds   Rxr 2016.03.28 23:42
riyuocr
riyuocr 谢谢!
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!