如何在java中将负数转换为二进制?

如何在java中将负数转换为二进制?,java,binary,Java,Binary,我正在尝试将负长数(例如-1065576264718330231L)转换为二进制。 首先,通过删除符号将负数转换为正数; 第二步,得到第一步结果的二进制 然后我被第二步的二进制结果“添加一”所困扰,即: 求你了!如何实施第三步? 或者你有其他更好的解决方案吗 有符号整数/long使用两个补码表示法: 假设你有-6: 6 = 000..000 110 binary 111..111 001 one's complement 111..111 010 add 1 -6 = 111.

我正在尝试将负长数(例如-1065576264718330231L)转换为二进制。 首先,通过删除符号将负数转换为正数; 第二步,得到第一步结果的二进制

然后我被第二步的二进制结果“添加一”所困扰,即:

求你了!如何实施第三步? 或者你有其他更好的解决方案吗


有符号整数/long使用两个补码表示法:

假设你有-6:

6 = 000..000 110 binary
    111..111 001 one's complement
    111..111 010 add 1
-6 = 111..111 010
优点是正常的二进制加法有效(-6+6=0),只有一个0

你可以从0中减去6:

      000
      110
   ------ -
        0
       1   borrow 1 (all ones at the top)
      0
...111

111...111010 = -6

Note:
If one borrows (subtracts one of) 0000000, one actually uses an overflow:
                               (1)0000000 which minus 1 delivers
                                  1111111
糖果:

long n = -1065576264718330231L;
System.out.println(Long.toUnsignedString(n, 2));
System.out.println(Long.toString(n, 2));

有符号整数/长使用两个补码表示法:

假设你有-6:

6 = 000..000 110 binary
    111..111 001 one's complement
    111..111 010 add 1
-6 = 111..111 010
优点是正常的二进制加法有效(-6+6=0),只有一个0

你可以从0中减去6:

      000
      110
   ------ -
        0
       1   borrow 1 (all ones at the top)
      0
...111

111...111010 = -6

Note:
If one borrows (subtracts one of) 0000000, one actually uses an overflow:
                               (1)0000000 which minus 1 delivers
                                  1111111
糖果:

long n = -1065576264718330231L;
System.out.println(Long.toUnsignedString(n, 2));
System.out.println(Long.toString(n, 2));

给定的长值为
-1065576264718330231L

长v=-1065576264718330231L;
系统输出println(长toBinaryString(v));
或者你可以自己编写算法

StringBuilder sb=新建StringBuilder();
而(v!=0){
某人附加(v<0?'1'
: '0');

v给定的长值为
-1065576264718330231L

长v=-1065576264718330231L;
系统输出println(长toBinaryString(v));
或者你可以自己编写算法

StringBuilder sb=新建StringBuilder();
而(v!=0){
某人附加(v<0?'1'
: '0');

我真的不明白你想要实现什么。但是如果你有一个long,那么它已经被转换成二进制。如果你想访问这个long的二进制表示形式作为字符串,那么你可以使用long类的
tobinarysting
方法,例如:
long.tobinarysting(-1477552144L)
哦,我的天啊。我甚至不知道它有这个方法。这就是我想要的。我真的不明白你想要实现什么。但是如果你有一个long,那么它已经被转换成二进制。如果你想访问long作为字符串的二进制表示,那么你可以使用long类的
tobinarysting
方法例如:
Long.toBinaryString(-1477552144L)
哦,天哪,我甚至不知道它有这个方法。这才是我真正想要的。。