- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是在搞乱Integer.toBinaryString(int)
方法。
当我传递正数(例如 7)时,它会输出 111
,但当我传递负数 7 时,它会输出 11111111111111111111111111111001
。我知道Java使用2的补码来表示负数,但为什么是32位(我也知道int的长度是32位,但不适合答案)?
最佳答案
好吧,我做了一些挖掘...
我写了一个小程序,可能与你所做的很接近。
public class IntTest {
public static void main(String[] args){
int a = 7;
int b = -7;
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
}
}
我的输出:
111
11111111111111111111111111111001
所以如果 111 前面有 29 个“0”,那么它是相同的。那只是浪费空间和时间。
如果我们按照这个人 here 的双人赞美指示进行操作您可以看到,我们必须做的就是翻转位(零变为一,一变为零),然后将结果加 1。
因此 0000 0000 0000 0000 0000 0000 0000 0111 变为 1111 1111 1111 1111 1111 1111 1111 1001
这些不能被丢弃,因为它们在二进制补语表示中很重要。这就是为什么在第二种情况下你有 32 位。
希望这有帮助! -- 代码开始!!!
关于java - 如果参数为负数,为什么 Integer.toBinaryString 返回 32 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25371805/
编译以下内容时出现类型不兼容错误: public class E10_Bitwise { public static void main(String[] args) { Bi
我在一个简单的计算器中使用 toBinaryString 将整数转换为其二进制等价物,每当进行除加法之外的任何数学运算时,我都会得到前导 1 和不应该出现的 0。 例如,我从 10 中减去 5,这应该
我正在使用 Integer.toBinaryString 将 float 转换为 intbits (Float.floatToIntBits()) 转换为二进制。然而,结果是无符号的。有什么方法可以获
我不知道为什么在 yy.charAt(i) 赋值时出现错误。它说...预期变量...不是值。 static int subtract(int x,int y) { String yy=Inte
这个问题已经有答案了: How to get 0-padded binary representation of an integer in java? (17 个回答) 已关闭 6 年前。 我目前正
简单场景:你有一个字节数组 byte[] message = { 1, 2, 3 }; 要以二进制形式打印出来,您可以使用代码: for (byte b : message) { System
一个简单的设计问题。 示例代码: Integer int1 = new Integer(20); System.out.println(Integer.toBinaryStri
我需要修改这两行代码,以便它们始终返回四位二进制数。 String binary1 = Integer.toBinaryString(t1); String binary2 = Int
我正在尝试将整数输入转换为二进制字符串并将它们连接在一起形成一个长字符串。示例: input: 4 5 output: 0100 0101 检查 API 并看到 toBinaryString 返回一个
我了解到短类型变量是一个 16 位有符号整数,但是 short n = -1; System.out.println(Integer.toBinaryString(n)); 输出: 1
我正在使用 double,需要找到 827.0 的二进制版本。 环顾四周的方法是this . 我也是这样的: double myDouble = 827.0; Long.toBinaryString(
我正在编写一种将 int 值转换为二进制字符串并存储它们的方法。我正在使用 Integer.toBinaryString 方法来这样做,它工作正常,但问题是我需要方法在字符串中返回 4 位而不是更少(
我只是在搞乱Integer.toBinaryString(int)方法。 当我传递正数(例如 7)时,它会输出 111,但当我传递负数 7 时,它会输出 11111111111111111111111
inttime[] 是一个数组,其中已经包含一位整数值。第一个 for 循环寻求将每个整数转换为二进制字符串并将其存储到字符串数组 bintime[]。这部分工作正常,但是当我尝试运行下一个 for
这两个函数都将 Long 转换为二进制 String,但是其中一个比另一个更优化吗?我查看了Long类的源代码,这两个静态方法有不同的实现。 最佳答案 答案很容易得到,只需做一下测试: class T
为什么这两种方法在处理二进制数时使用两种不同的方法? Integer.parseInt(String s, 2)方法中表示负二进制数的字符串应该以-字符开头,但是Integer.toBinaryStr
我是一名优秀的程序员,十分优秀!