输出32位整型数据的二进制

Posted yangbocsu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出32位整型数据的二进制相关的知识,希望对你有一定的参考价值。

输出32位整型数据的二进制




一、正整数

1.1 原码

    public static void main(String[] args) 
        // 32位 正整数 三码一样   原码 反码  补码
        int num = 127;
        print(num);
    
    public static void print(int num)
        for (int i = 31; i >= 0 ; i--) 
            System.out.print((num & (1 << i)) == 0 ? 0 : 1);
        
    

1.2 反码

    public static void main(String[] args) 
        // 32位 正整数 三码一样   原码 反码  补码
        int num = 127;
        print(num);
    
    public static void print(int num)
        for (int i = 31; i >= 0 ; i--) 
            System.out.print((num & (1 << i)) == 0 ? 0 : 1);
        
    

1.3 补码

    public static void main(String[] args) 
        // 32位 正整数 三码一样   原码 反码  补码
        int num = 127;
        print(num);
    
    public static void print(int num)
        for (int i = 31; i >= 0 ; i--) 
            System.out.print((num & (1 << i)) == 0 ? 0 : 1);
        
    

二、负整数

2.1 原码

  • 负数的原码:符号位为1数值位为其绝对值
    public static void main(String[] args) 
        // 32位 负整数 原码
        int num = -7;
        print(num);
    
    public static void print(int num)
        // 符号位
        System.out.print(1);
        for (int i = 30; i >= 0 ; i--) 
            System.out.print((-num & (1 << i)) == 0 ? 0 : 1);
        
    

2.2 反码

    public static void main(String[] args) 
        // 32位 负整数 反码
        int num = -7;
        print(num);
    
    public static void print(int num)
        // 符号位
        System.out.print(1);
        for (int i = 30; i >= 0 ; i--) 
            int tmp = (-num & (1 << i)) == 0 ? 0 : 1;
            System.out.print(tmp == 0 ? 1:0);
        
    

2.3 补码

  • 在计算机中,负数都是以补码形式存在的
  • 所以直接按正整数的方式输出即可;
    public static void main(String[] args) 
        // 32位 负整数 补码
        int num = -7;
        print(num);
    
    public static void print(int num)
        for (int i = 31; i >= 0 ; i--) 
            System.out.print((num & (1 << i)) == 0 ? 0 : 1);
        
    

三、-1

3.1 -1的补码

-1原码

  • 等于数值位取反加1

首先:
符号位: 1
数值位: 1111111111111111111111111111111

原码:

10000000000000000000000000000001

已知补码,求原码。

分析:

  • 按照求负数补码的逆过程,数值部分应是最低位减1,然后取反。
  • 但是对二进制数来说,先减1后取反和先取反后加1得到的结果是一样的,故仍可采用取反加1 有方法。

整型最大、小值

    public static void main(String[] args) 
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        print(max);
        print(min);
    
    public static void print(int num)
        for (int i = 31; i >= 0 ; i--) 
            System.out.print((num & (1 << i)) == 0 ? 0 : 1);
        
        System.out.println();
    

以上是关于输出32位整型数据的二进制的主要内容,如果未能解决你的问题,请参考以下文章

golang数据类型变量定义

Go基础数据类型

Go基本数据类型

Go+类型与类型转换

五种常用的C/C++编译器对64位整型的支持

s32是啥数据类型 c语言