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);
		}
	}
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是夜阑的狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值