输出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位整型数据的二进制的主要内容,如果未能解决你的问题,请参考以下文章