java - 如何在 Java 字符串中使用波形符 ~

标签 java arrays math

我必须找到十进制数的补码。输入为字节,结果应为字符串。我已经编写了一个将十进制转换为二进制的程序,但我不知道如何将二进制字符串转换为补码,即用 1 替换 0,用 0 替换 1。

这是我到目前为止所写的内容:

String toTwoComp(byte n) {
    String s = "";
    byte num = n;
    String res = "";
    while (n > -128 && n < 127) {
        s = (num % 2) + s;
        num = (byte) (num / 2);
        if (num == 0) {
            break;
        }
    }
    res = "00000000".substring(s.length()) + s;
    return res;
}

最佳答案

任何字节或 int x 的二进制补码就是 -x。那么你尝试过这个吗?

   String b = toTwosComp((byte)3);
   System.out.println(b);


   static String toTwosComp(byte n) {
      int twosComp = -n;
      return Integer.toBinaryString(twosComp & 0xFF);
   }

请注意,您可以执行此操作,只需使用自己的方法转换为二进制字符串即可。

关于java - 如何在 Java 字符串中使用波形符 ~,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58903411/

相关文章:

java - 为多个字段构建 Lucene 查询

java - 在哪里以及如何存储文本文件以供读/写

C++ 14 : How to use variadic template to create an array of values 1-100

c++ - 如何将数字0到n均匀分配到m个不同的容器中

swift - float 数学方程式没有按预期工作

r - 如何挑选出矩阵中的特定值 [R]

java - 当 Web 客户端到达我的 websocket 服务器时,我应该如何在 handlerAdded 和 channelActive 之间做出决定?

java - HashMap 对象数组数据被替换

javascript - 将数组分成数组数组,如何在尾递归中进行?

javascript - 如何使用 for 循环遍历未知值