当前位置: 首页 > 知识库问答 >
问题:

为什么按位和给出不同的字节?

邹山
2023-03-14

Java 中的字节长度为 8 位。一个

十六进制表示形式采用两个十六进制字符 0-F

0xFF是一个字节。

如果我想到<code>


   Bit no: 1 2 3 4 5 6 7 8 
   Binary: 0 0 0 0 0 0 1 0 = decimal 2
Operation: & & & & & & & &
    Value: 1 1 1 1 1 1 1 1 = 0xFF
----------------------------------------
   Result: 0 0 0 0 0 0 1 0 = decimal 2

由于所有二进制文件都保持不变,因此我认为我们不需要

密码

public static void main(String[] args) {
    byte b = -1;
    System.out.println(String.valueOf(b).concat(" and ").concat(String.valueOf(b & 0xFF)));
}

结果

-1 and 255

如果这是我的假设(我们不需要


共有2个答案

郎正初
2023-03-14

0xFF是一个int,而不是一个字节,所以b

System.out.println(0xFF);            // 255. (only 8 of 32 bits are 1)
System.out.println((int)0xFF);       // 255. (only 8 of 32 bits are 1)
System.out.println((byte)0xFF);      // -1. (all 8 of 8 bits are 1)
System.out.println((int)(byte)0xFF); // -1. (all 32 of 32 bits are 1)

请注意,通过转换为byte并返回int,我们将所有32位都转换为1。因此,以下代码可以满足您的要求(请注意,在显式转换为byte之后,隐式转换为int):

public static void main(String[] args) {
    byte b = -1;
    System.out.println(String.valueOf(b) + " and " + String.valueOf(b & (byte)0xFF)));
}

输出:

-1和-1

储阳曦
2023-03-14

0xFF等于值为25500000000 00000000 00000000 11111111的int。字节-1是11111111,因为它是有符号的,所以这被解释为-1。如果它是无符号的,这也将是255

当你

 类似资料:
  • 问题内容: 查看以下代码,并请解释为什么该方法和函数给出两个不同的输出。 输出: 问题答案: 计算子字符串的非重叠出现次数: 返回substring sub 的不重叠出现的次数。 在字符串中恰好有一个这样的子字符串出现的位置:就在开头。因此计数 应该 返回。 一般来说,空字符串将匹配给定字符串中的 所有位置 ,包括开始和结束处的正确 位置 ,因此计数应 始终 为长度加1: 这是因为空字符串被认为存

  • 我正在尝试训练CNN按主题对文本进行分类。当我使用二进制交叉熵时,我可以获得大约80%的准确率,而使用分类交叉熵,我可以获得大约50%的准确率。 我不明白为什么会这样。这是一个多类的问题,难道这不意味着我必须使用分类交叉熵,而二元交叉熵的结果是没有意义的吗? 然后,我使用分类交叉熵作为损失函数来编译它: 或 直觉上,我想使用分类交叉熵是有道理的,我不明白为什么我用二进制得到的结果好,而用分类得到的

  • 问题内容: 我尝试将matlab代码转换为numpy,并发现numpy与std函数的结果不同。 在matlab中 在numpy中 这正常吗?我应该如何处理呢? 问题答案: NumPy函数采用一个可选参数:“自由度增量”。默认情况下是。对其进行设置以获取MATLAB结果: 要添加更多上下文,在计算方差(标准偏差为平方根)时,通常将其除以我们拥有的值的数量。 但是,如果我们从较大的分布中选择元素的随机

  • 问题内容: 我正在尝试运行以下内容。 如果我删除以下行: 至.... 一切都会正常。如果没有,我得到以下错误: 命令不同步; 您现在不能运行此命令 在研究,我认为这可能是由于多个库MySQLi查询同时运行,其中使用但在所有样品和通用数据导向似乎并不适用。 有任何想法吗? 问题答案: MySQL客户端不允许您执行新的查询,在该查询中仍需要从正在进行的查询中获取行。有关常见错误,请参见MySQL文档中

  • 参考这个答案,Lev说包括开始和停止索引,所以我尝试了这个: 但它们也不同。为什么啊? 有人能帮我吗?

  • 问题内容: 考虑下面的java代码。 输出量 价值的负值如何产生相同的价值? 但是结果不能是因为java中Integer的最大值是。 但是想知道为什么吗?内部正在发生哪种按位运算? 问题答案: 内部正在发生哪种按位运算? Java使用带符号数字的二进制补码表示。因此,更改符号操作包括两个步骤: 反转原始值的位,并 添加到结果中。 的表示如下: 反转产生 加法使其再次成为相同的数字,即 由于整数溢出