黑马程序员技术交流社区

标题: 八进制,16进制能有负号吗? [打印本页]

作者: 戴振良    时间: 2012-4-10 00:38
标题: 八进制,16进制能有负号吗?
我们给一个数负值,如int y=-4,这里可以加个负号,如果给他赋值个8进制或16进制的负数,怎么表示?int y= -0x5e  与y=-076是错误的,是吗?
作者: wang耀雨    时间: 2012-4-14 12:54
二进制的负数形式和8进制负数形式最高位都是1,十六进制的负数形式最高位都是f开头,没有负号的概念,
y=-0x5e和y=-76肯定是错误的,虚拟机都不知道你在表示什么,除了10进制带有负号外其他进制是不存在负号的,因为进制的负数形式都是采用补码的形式存在的。
作者: wang耀雨    时间: 2012-4-14 13:01
如果你要表示(16)0x5e和(8)76的相反数,那么你需要先将它们转换为二进制,然后转换成负数形式,然后分别转换为8进制和16进制,例如:

-6:其实就是6的二进制先取反再+1、即11...010.
取反:将二进制的1变成0,0变成1。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2