相关疑难解决方法(0)

为什么有符号字节的范围是-128到127(2的补码)而不是-127到127?

我读了 为什么Java中的字节范围是-128到127? 它说

128是10000000.倒置,它是01111111,再加一个得到10000000

所以它总结-128是10000000

所以+128不能用8位的2的补码表示,但这意味着我们可以用9位表示它,所以128是010000000,所以取其2的补码-128是110000000,

所以代表-128 10000000或110000000?表示位是否依赖?

为什么不简单地将较低范围-127个8位而不是将-128写为10000000?

math bit-manipulation computer-architecture twos-complement

25
推荐指数
3
解决办法
7万
查看次数

Java二进制文字 - 字节值-128

由于SE 7 Java允许将值指定为二进制文字.文档告诉我'byte'是一种可以保存8位信息的类型,值为-128到127.

现在我不知道为什么,但我不能定义8位但只有7如果我尝试将二进制文字分配给Java中的一个字节,如下所示:

byte b = 0b000_0000;    //solves to the value 0
byte b1 = 0b000_0001;   //solves to the value 1
byte b3 = 0b000_0010;   //solves to the value 2
byte b4 = 0b000_0011;   //solves to the value 3     
Run Code Online (Sandbox Code Playgroud)

依此类推,直到我们使用这7位获得最后几种可能性:

byte b5 = 0b011_1111;   //solves to the value 63
byte b6 = 0b111_1111;   //solves to the value 127
Run Code Online (Sandbox Code Playgroud)

如果我想让它成为负数我必须添加一个领先 - 在这样的前面:

byte b7 = -0b111_1111;   //solves to the value -127
Run Code Online (Sandbox Code Playgroud)

现在问题的一半是我只使用7位来描述他们告诉我的是8位数据类型.下半部分是他们似乎没有线程作为二进制补码,除非使用32位int类型,我可以定义所有32位(包括"符号指示位").

现在,当我搜索如何显示范围内的数字-128时,我被告知这样做,没有任何进一步的解释:

byte b8 = 0b1111_1111_1111_1111_1111_1111_1000_0000;
Run Code Online (Sandbox Code Playgroud)

我可以清楚地看到最后8位(1000 0000)在使用8位的两个强制中确实代表-128,但我从来没有被混淆过多并尝试提出我的问题:

  • 上面32位长是不是一个32位(java-)int值? …

java binary byte literals twos-complement

8
推荐指数
1
解决办法
9456
查看次数

将整数变量转换为字节变量

您好我正在学习java编程,我刚在我的书中有任务说将int varible转换为byte变量

byte b;
int i=257;
Run Code Online (Sandbox Code Playgroud)

当我将int转换为b

b=(byte) i;
Run Code Online (Sandbox Code Playgroud)

输出是1?当字节变量的值从-128变为127时它怎么可能在我的书中他们说字节变量的有效范围是256?

java

3
推荐指数
1
解决办法
3632
查看次数

在java中初始化字节数组时,何时必须转换为字节?

这是代码:

import java.io.*;

public class Bed {
    private String bedfn;
    private int bytes_snp;
    private int nindiv;
    private long bedsize;
    private int nsnp;
    private byte[] magicBytes;

    public Bed(String bedfn, int bytes_snp, int nindiv) {
        this.bedfn = bedfn;
        this.bytes_snp = bytes_snp;
        this.nindiv = nindiv;
        bedsize = (new File(bedfn)).length();
        nsnp = (int) ((bedsize - 3) / bytes_snp);
        ///////////////////////////////////////
        magicBytes = new byte[] {0x6c, 0x1b, 0x01};
    }

    //...

    public OutputStream writeBytes(OutputStream fileStream, byte[] bytes) {
        try{
            fileStream.write(bytes);
        } catch (IOException e) {
            e.printStackTrace();
        } …
Run Code Online (Sandbox Code Playgroud)

java arrays int byte type-conversion

3
推荐指数
1
解决办法
118
查看次数

当我们说java中Byte的宽度是8位时,它是什么意思?

我可以存储-127到127之间的数字,但除此之外是不可能的,编译器会发出警告.二进制值127是01111111,130是10000010仍然是相同的大小(8位),我认为我可以存储130字节,但它是不可能的.那是怎么发生的?

java primitive-types

2
推荐指数
1
解决办法
1428
查看次数

有符号基元中的 0 是正数还是负数(或两者兼而有之)?

我正在“Code Ranch”上阅读此页面,其中讨论了变量。

它正在讨论“有符号原语”,并说 0 算作负数???

我一直认为这些情况下 0 是阳性?

所有这些整数类型都是有符号的。最左边的位表示符号(正或负),不是值的一部分。例如,对于一个字节,您无法获得整个 8 位来表示您的值。您得到 7。这​​为您提供了字节范围:(-2 到第 7 个)到(2 到第 7 个)-1。为什么最后有那个小-1?因为那里有零,而零算作负数。与其他人的工作方式相同。

http://www.javaranch.com/campfire/StoryCups.jsp

但是当看这篇文章时Why the range of bytes of bytes in Java? -128 to 127 in Java?

一条评论提到“默认情况下 0 为正”。它还谈到了“二人的赞美”,并提到最左边的位中带有“1”的任何内容都将是“负数”,而 0 则没有......

另外,如果 0 是负数 -128 到 0 就是 129 个负数,127 个正数,这没有意义......

所以我很好奇这是否是一个错误,或者 0 是否为负数,为什么?

另外,我正在阅读这篇文章原始浮点值如何为-0.0?这意味着什么?

那是在谈论值为 -0.0 的浮点数,并为其添加“0.0”以使其成为“中性/正数”0.0....

所以我很好奇浮点数中是否同时存在正零和负零,或者它是否同时存在于浮点和整数基元中???

另外,当我在谷歌上搜索这个问题的答案时,提到“零既不是正负也不是正负......”好奇这是否/何时适用于我们的语言?

谢谢

java variables primitive signed zero

2
推荐指数
1
解决办法
2323
查看次数

将String转换为UTF-8字节数组会在Java中返回负值

假设我有一个字节数组,我尝试使用以下代码将其编码为UTF_8

String tekst = new String(result2, StandardCharsets.UTF_8);
System.out.println(tekst);
//where result2 is the byte array
Run Code Online (Sandbox Code Playgroud)

然后,我使用getBytes()获取字节,值为0到128

byte[] orig = tekst.getBytes();
Run Code Online (Sandbox Code Playgroud)

然后,我希望使用ff对我的byte [] orig进行频率计数:

int frequencies = new int[256];

for (byte b: orig){
    frequencies[b]++;
}
Run Code Online (Sandbox Code Playgroud)

一切顺利,直到我遇到一个错误

java.lang.ArrayIndexOutOfBoundsException: -61
Run Code Online (Sandbox Code Playgroud)

这是否意味着我的字节仍包含负值,尽管将其转换为UTF-8?我有什么不对劲吗?有人可以告诉我这个原因的清晰度我仍然是这个主题的初学者.谢谢.

java arrays string encoding utf-8

2
推荐指数
1
解决办法
1955
查看次数

为什么有符号字节的大小不等于 -128 到 128?

字节范围是 -128 到 127 为什么这个 128-1 在积极的一面。为什么双方不相等。为什么从右侧减去这个。

byte 1 byte 存储从 -128 到 127 的整数

java中的字节大小

java

0
推荐指数
1
解决办法
110
查看次数