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);
    }
  }
}
相关文章
|
7月前
|
算法 Java
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
[Java·算法·简单] LeetCode 13. 罗马数字转整数 详细解读
67 0
|
3月前
|
Java
java基础(10)数据类型中的整数类型
Java中的整数类型包括byte、short、int和long。整数字面值默认为int类型,加L表示long类型。整数字面值可以是十进制、八进制(0开头)或十六进制(0x开头)。小容量类型(如int)可自动转换为大容量类型(如long),但大容量转小容量需强制转换,可能导致精度损失。
46 2
|
7月前
|
Java
Java中将一个数转化为二进制
Java中将一个数转化为二进制
74 0
|
6月前
|
Java 程序员
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
程序员必知:【java】判断字符串是否整数的三种方式,孰优孰劣请自行判断
190 3
|
6月前
|
算法 Java Go
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
【经典算法】LeetCode 67. 二进制求和(Java/C/Python3/Golang实现含注释说明,Easy)
67 2
|
6月前
|
Java
剑指offer_3_前n个数字二进制形式中1的个数(java)
剑指offer_3_前n个数字二进制形式中1的个数(java)
|
6月前
|
Java
剑指offer_2_二进制加法(java)
剑指offer_2_二进制加法(java)
|
6月前
|
Java
剑指offer_1_整数除法(java)
剑指offer_1_整数除法(java)
|
7月前
|
Java
Java 中表示整数的包装类Integer(详解)
Java 中表示整数的包装类Integer(详解)
|
7月前
|
Java
JAVA输入任意一个数字,实现递减求和(计算任意整数n的和)
JAVA输入任意一个数字,实现递减求和(计算任意整数n的和)
60 0