[英]how to assign negative numbers as binary to int variable in java?
我正在看如何在Java中表示二进制数。 一种选择是用作String
并使用Integer.parseInt()
获取decimal
值;
另一个选择(将2分配给b
):
int b = 0b0010; //2
System.out.println(b);
System.out.println(Integer.toBinaryString(-2));
输出:
2
11111111111111111111111111111110
使用这种格式,如何表示-2:
int c=??//-b
int
值存储在32位中,其中最高有效位是符号。
0b0010; //2
实际上是
0b00000000_00000000_00000000_00000010; //2
要将其转换为负数,请将0
s翻转为1
s,将1
s翻转为0
s`,然后加1。
0b00000000_00000000_00000000_00000010; //2
0b11111111_11111111_11111111_11111101
0b11111111_11111111_11111111_11111110; // +1
所以
int b = 0b11111111_11111111_11111111_11111110;
的值为-2
。
使用按位NOT运算符:
00000000000000000000000000000010 // 2 = 0b0010
00000000000000000000000000000001 // 1 = 0b0010-0b0001
11111111111111111111111111111110 // ~1 = ~(0b0010-0b0001)
11111111111111111111111111111110 // -2 = ~(0b0010-0b0001)
因此,您只需减去0b001
并使用~
按位运算符将所有位翻转:
int b = ~(0b0010-0b0001); // ~(2-1) = ~1 = -2
System.out.println(b);
System.out.println(Integer.toBinaryString(b));
您将存储与演示混淆了。 int b
没有基地,无论您指定2
, 0b010
或0x02
到它。 Base 10只是println
假定的。
您可以使用Integer.toString(number, radix)
打印正确签名的二进制数字。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.