A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

疑问;负数进制转换问题,在Integer类中整数进制转换包括负整数,二进制还可以理解,但是负数的八进制和十六进制是怎么表示的?API中是这样解释的,但还是看不懂?
toHexString
public static String toHexString(int i)
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。
如果参数为负,那么无符号整数值为参数加上 232;否则等于该参数。将该值转换为十六进制(基数 16)的无前导 0 的 ASCII 数字字符串。如果无符号数的大小值为零,则用一个零字符 '0' (’\u0030’) 表示它;否则,无符号数大小的表示形式中的第一个字符将不是零字符。用以下字符作为十六进制数字:
0123456789abcdef
这些字符的范围是从 '\u0030' 到 '\u0039' 和从 '\u0061' 到 '\u0066'。如果希望得到大写字母,可以在结果上调用 String.toUpperCase() 方法:
Integer.toHexString(n).toUpperCase()
参数:
i - 要转换成字符串的整数。
返回:
参数的十六进制(基数 16)无符号整数值的字符串表示形式。
从以下版本开始:
JDK1.0.2

4 个回复

正序浏览
陈鹏No1 发表于 2015-7-27 15:48
以32位二进制位基准的话可以啊,八进制最高位为2或3时为负数,十六进制最高位大于8时为负数 ...

大神,顶礼膜拜!多谢不吝赐教。
回复 使用道具 举报
libin 发表于 2015-7-27 15:30
请问八进制、十六进制能眼观上区分正负吗?

以32位二进制位基准的话可以啊,八进制最高位为2或3时为负数,十六进制最高位大于8时为负数
回复 使用道具 举报
陈鹏No1 发表于 2015-7-27 13:49
计算-60的二进制、八进制、十六进制
60    0000-0000 0000-0000 0000-0000 0011-1100
取反  1111-1111 1111 ...

请问八进制、十六进制能眼观上区分正负吗?
回复 使用道具 举报
计算-60的二进制、八进制、十六进制
60    0000-0000 0000-0000 0000-0000 0011-1100
取反  1111-1111 1111-1111 1111-1111 1100-0011
加1  1111-1111 1111-1111 1111-1111 1100-0100
再二进制转换八进制,三位二进制为一位八进制
                37777777704
二进制转换成十六进制,四位二进制位一位十六进制
                ffffffc4
还有别的方法么?自己百度下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马