如何找到十六进制 F3A1 的二进制补码?
首先我将数字转换为二进制 1111 0011 1010 0001 然后我发现二进制补码 0000 1100 0101 1111 给出的结果是 0C5F,这与书中的答案不同:0A57
我做错了什么?
如何找到十六进制 F3A1 的二进制补码?
首先我将数字转换为二进制 1111 0011 1010 0001 然后我发现二进制补码 0000 1100 0101 1111 给出的结果是 0C5F,这与书中的答案不同:0A57
我做错了什么?
如果您对十六进制有点熟悉,则无需转换为二进制。只需取每个数字的 base-16 补码,然后将结果加 1。所以:
F - F = 0
F - 3 = C
F - A = 5
F - 1 = E
所以你得到0C5E。加 1,结果如下:0C5F。
将 1 翻转为 0,将 0 翻转为 1(即正则补码)。然后加1。
你做错的是对一本书有太多的信心。
但是,从好的方面来说,至少它是某种可能大部分是正确的技术书籍。
对于更快的方法,您还可以将左侧的位翻转到第一个设置位并找出 2s 补码(而不是找到 1ns 然后向其添加 1)
1111 0011 1010 0001
将左边的位切换到第一个设置位
0000 1100 0101 111
1
如果位模式更改为二进制而不是十六进制,我希望您会喜欢这个:)