高手好!
我刚开始学习java,学完“结构化程序设计”章节后,遇到了一道题,如下:“完成下面的通用程序,要求能够输出给定整数i的二进制补码。
public class Example
{
public static void main(String args[])
{
int i=10;
//在这里,请写上尚未完成的程序,使得本程序在执行时能输出i的二进制补码
}
}
在网上找到一个方法是使用语句System.out.println(Integer.toBinaryString(i));
但是integer和binary string还没有在本章及之前的章节中出现过,所以想请教高手是否还有其他方法啊?谢谢啦!!!
不要局限章节吧,学前班还要念一年级的书磊。正数的原码反码补码都一样,最快的方法就是Integer.toBinaryString()
/* 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);
}
}
(正数的补码直接转换为二进制,负数的,先加上2^(N-1)再变二进制,对于32bit来说,N=32)
这个是jdk提供的api,提前了解下呗Integer是int的包装类,封装了很多实用的数值操作方法。像这个转换二进制的方法,我们就可以直接调用就好了啊,很方便的。至于实现过程,你按下F3跟踪下源码