| 发表于:2007-01-18 00:30:302楼 得分:10 |
某个负数10进制转成16进制,理论上应该是求它绝对值的补码,也就是先去掉十进制的负号,转成二进制,再取反加一。如果16转10进制,也是就倒过来了,先把16进制化成二进制,减一再取反,最后加上负号。 比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。 那么,补码为: 11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xfffffffb。 本题方法: fbb4---转二进制--1111 1011 1011 0100 ---减1---1111 1011 1011 0011 ---取反---0000 0100 0100 1100---转为十进制---1100(十进制的)再加上负便可。 楼上的走了捷径。 按照楼上的思路 string s= "fbb4 ";(字符串s长度不要超过七位,否则numberformat异常) system.out.println(integer.parseint(s,16)-math.pow(2,4*s.length())); 如果有问题忘高手指点。。。 | | |
|