负数十六进制快速计算方法

负数十六进制快速计算方法

起因:找工作时笔试过程中经常遇到十进制转十六进制的题目,
而且会时不时遇到负数转十六进制的题目,题目考察的是应聘
者对进制转换的掌握程度。

传统思路:1.先将十进制转二进制再取反得反码后加1得到补码
2.将二进制4位一组划分转成对应十六进制

突发奇想转换思路:假设我们要转换的是32位平台下的int类型
(4字节32位)的-13,那我们可以快速写出-1的十六进制为:
FFFFFFFF(有符号类型的数据-1就是其类型范围的最大值,8位
char类型的-1为FF,这个比较好记,都是F,4位一个F,8位两个F
依此类推),那么32位-13 = -1 - 12,则-13的补码就是-1的补
码减去12,则32位的-13补码十六进制即为:
FFFFFFFF - 12 = FFFFFFF3

扩展:同样我们可以扩展一下,例如C中我们可以将-1强转为无
符号数除以2就可以得到有符号数正数的范围的上限(虽然没用,
但是可以提供一种巧用的思路)

原创文章,装载请附上原链接。

猜你喜欢

转载自blog.csdn.net/lifeshave/article/details/84064047