Tag: 二进制补码

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 依此类推,直到我们使用这7位获得最后几种可能性: byte b5 = 0b011_1111; //solves to the value 63 byte b6 = 0b111_1111; […]

Java二进制补码二进制到整数

我知道使用Integer.toBinaryString(355) = 0000000101100011和Integer.toBinaryString(-355) = 1111111010011101 (其中我取32位结果的低16位Integer.toBinaryString(355) = 0000000101100011将十进制转换为二进制。 我想做的是另一种方法,并采用16位二进制补码二进制字符串并转换为十进制。 即 0000000000110010 = 50 1111111111001110 = -50 而不是1111111111001110 = 65486 我该怎么办?

为什么字节b =(字节)0xFF等于整数-1?

为什么byte b = (byte) 0xFF等于integer -1 ? 例如: int value = byte b = (byte) 0xFF; System.out.println(value); 它会打印-1 ?

java中的2的补码hex数到十进制数

我有一个hex字符串代表一个2的补数。 是否有一种简单的方法(库/函数)将hex转换为十进制而不直接使用它的位? EG这是左侧hex给出的预期输出: “0000” => 0 “7FFF” => 32767 (max positive number) “8000” => -32768 (max negative number) “FFFF” => -1 谢谢!