java - 理解二进制补码中的十六进制数到十进制数 - Java

标签 java hex type-conversion byte twos-complement

我正在努力理解 this在这里回答。

这两个 0xf20xfffffff2 值如何表示 -14?您能否详细说明转换过程?

不过,我知道什么是补码。

最佳答案

0xf2 = 11110010

第一位是符号位。所以符号是负号。要获得实际值(value),请接受 2 的赞美。

11110010 -> 1's complement -> 00001101 -> Add 1 -> 00001110 = -14

同样,取0xfffff...f2开头的符号位。取2的补码。

1111-1111-1111.....0010 -> 1's complement -> 00000000000...1101 -> Add 1 -> 0000...1110 -> -14

前面的任何数字 1111... 不会对负符号数的值产生影响,就像 0000.. 不会为正值。


以上计算是针对 8 位有符号 0xf232 位有符号 0xfffffff2 的,两者数学上相等

关于java - 理解二进制补码中的十六进制数到十进制数 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369065/

相关文章:

php - 如何将字符串视为字符串而不是 PHP 中的 int

java - eclipse 4.5.1。 (MARS.1) 未找到方法 : setDefaultEditor

java 。 Collection 。按页数限制分区

mysql - 不从 MySql 存储过程中检索正确的十六进制值

python 字符串格式 %x 和 %#x 有什么区别(哈希标签十六进制?)

linux - 将 hexdump 转换为字节序列

c++ - 如何将 std::string 转换为 WCHAR

python - 如何将字节串转换为字符串?

java - 如何从servlet向jsp页面发送参数

java - 您可以使用整数值而不是 EnumType.STRING 或 ORDINAL 来保存枚举吗?