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

标签 java binary

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

然后我陷入了对第二步的二进制结果“加一”的困境,即:

enter image description here

拜托!第三步如何实现? 或者您还有其他更好的解决方案吗?!

http://geekexplains.blogspot.com/2009/05/binary-rep-of-negative-numbers-in-java.html

最佳答案

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

假设你有-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));

关于java - java中如何将负数转换为二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56952924/

相关文章:

javascript - 发送一组二进制数据,并高效地将其写入服务器端

java - Jersey moxy-media-module 不支持 json

java - 如何使android主页按钮栏透明?

node.js - node js,如何将整数写入/读取二进制文件?

arrays - ruby 中的最佳排列计数算法

c++ - 计算 1 到 n 的二进制数

ios - 什么 iOS pod 在 PrivateFrameworks/ScreenReaderCore.framework 中使用 SCRCException ?

java - 如何将此代码从 iOS swift 转换为 Android Kotlin

java - Spring ajax请求

java - 如何检查首选项是否存在