Java中整数(负数)的二进制表示

简介: Java中整数(负数)的二进制表示

首先我们要对原码、反码和补码有个了解:

1、所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

2、反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 原码10010= 反码11101

(10010,1为符号码,故为负) (11101) 二进制= -13 十进制

3、补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

举一例,我们来看整数-2在计算机中如何表示。

假设这也是一个int类型,那么:

1、先取1的原码:00000000 00000000 00000000 00000010

2、得反码: 11111111 11111111 11111111 11111101

3、得补码: 11111111 11111111 11111111 11111110

Java中整数的二进制表示
public class Test4 {
  public static void main(String args[]) {
    /*
    //创建Scanner对象,接受从控制台输入
    Scanner input=new Scanner(System.in);
    //接受String类型
    String str=input.next();
    //输出结果
    System.out.println(str);
    */
    Scanner input = new Scanner(System.in);
    int number = input.nextInt();
    input.close();  //关闭输入流
    int remainder;  //定义一个变量用于存储余数
    String s = new String();
    //判断是否为负数
    if (number >= 0) {
      while (number != 0) {
        remainder = number % 2;
        number /= 2;
        if (remainder != 0)
          s = s.concat("1");
        else if (remainder == 0)
          s = s.concat("0");
      }
      //使用StringBuilder的reverse函数反转字符串
      System.out.println(new StringBuilder(s).reverse().toString());
    } else if (number < 0) {
      
      //第一种方法:直接调用java的toBinaryString函数输出
      //System.out.println(Integer.toBinaryString(number));
      
      //第二种方法:通过用右移运算符>>和与运算符&来获取number末位的二进数,然后再用数组str存入
      int size = 32; //int型的32位
      char[] str = new char[size + 1];
      for(int i = size - 1; i >= 0; --i, number >>= 1) {
        str[i] = (char) ('0' + (1 & number));
      }
      str[size] = '\0';
      System.out.println(str);
    }
  }
}
相关文章
|
1月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
23 0
|
3月前
|
Java
Java打印二进制
Java打印二进制
44 0
|
1月前
|
Java
Java中将一个数转化为二进制
Java中将一个数转化为二进制
25 0
|
1月前
|
算法 Java 开发者
Java:求正整数分解为质因数Java
Java:求正整数分解为质因数Java
|
1月前
|
算法 Java 数据处理
Java:将一个数转化为二进制
Java:将一个数转化为二进制
|
1月前
|
机器学习/深度学习 Java 程序员
Java基础之二进制,八进制,十进制,十六进制相互转换
Java基础之二进制,八进制,十进制,十六进制相互转换
|
1月前
|
Java
Java 中表示整数的包装类Integer(详解)
Java 中表示整数的包装类Integer(详解)
|
2月前
|
Java
Java字符串转整数的超简单方法!
Java字符串转整数的超简单方法!
32 0
|
2月前
|
Java
LeetCode-整数转罗马数字=Java
整数转罗马数字=Java题解
12 0
|
2月前
|
Java 测试技术
java字符串练习题5、罗马数字转整数
java字符串练习题5、罗马数字转整数
25 0