如果我有一个负十进制数,例如-5,并将其转换为十六进制格式。我可以简单地在十六进制数字前面加上一个负号吗?或者是否有另一种方式可以像2对二进制的恭维一样?
答案 0 :(得分:4)
没有“单向”来表示负数。也就是说,有许多标准方法可以表示负数。为了保持数学简单,我将假设所有数字都使用4位。
0111
为7,但1111
为-7。 (也可以反过来0111
是-7 1111
是7。0111
为7,但1000
为-7(所有位都被翻转。这具有0000
的奇数属性为自然0,但1111
为a(负零) -0。0111
为7,但1000 + 0001
或1001
为-7。这利用整数溢出来维持负零。 0000
否定1111 + 0001
溢出到0000
。它还有一些很好的属性,如果可以写入两个数字,那么将一些数字加上其负分辨率加到零(有一个负数而不是正数)。 7 +( - 7)为0111 + 1001
,溢出为0 0000
。你可能会听到这样的说法:“这意味着你想要的意思”。这意味着你可以想出任何方式来表示任何东西,你只需要根据你想要的值建立一个位的“地图”。例如,这是一种表示素数的奇怪,异想天开的方式。
(bits) => value
0001 => 2
0010 => 3
0011 => 5
0100 => 7
0101 => 11
0110 => 13
0111 => 17
(and so on)
这样的系统很难用数学算法,但这是一个例子,你不必受限于某种特定的做事方式。只要您构建例程以从预期输入生成预期输出,您就可以将位映射到值表示您希望它的含义。
这种意义是你对比特强加的意义很重要。当您开始处理文本时,“编码”是对存储文本的位施加的含义,相同的位有时会编码不同的字母。