以一个字节的话,负数在内存中的存储形式是以补码的,则-10就以1111 0110的形式存储,这个就是他的二进制,16进制的话,从二进制的右端开始以四位读成一位的16进制,左端不足四位补0,这样的话-10的16进制形式是f6
8进制和16进制一般都是无符号型的,所以你只要先把10进制的负数的补码搞定,然后再按无符号型的转成8和16进制的就可以了。
关于补码问题
正数:二进制原码就是补码; 负数:绝对值的原码按位取反,然后加1就是这个负数的补码;
比如-111转换成2、8、16进制:
绝对值的原码是:0000 0000 0110 1111
取反:1111 1111 1001 0000
加1: 1111 1111 1001 0001(补码)
1 111 111 110 010 001
转8进制:1 7 7 6 2 1(从最右边起,2进制的三位所表示的十进制数对应8进制的一位)
结果:0177621
1111 1111 1001 0001
转16进制: F F 9 1 (从最右边起,2进制的四位所表示的十进制数对应16进制的一位)
结果:0xFF91
我是新手 自己的理解的 不知道能不能解楼主之惑
[ 本帖最后由 feng_gutu 于 2011-2-17 08:48 编辑 ]