另外下面两句中,前一句可以,而后一后不能通巡编译,为什么呢
float f=023.0f;//对
float f=0x23.0f;//错
float f=023.0f;//对
float f=0x23.0f;//错
解决方案 »
- 关于finalize()函数和GC的小问题
- 为什么搞java的一定要会JSP,JavaScript之类的?
- 怎么实现右击弹出菜单?
- 谁可以告诉我 新式的for 循环语句怎么用
- 对象序列化问题,急在线等,请高求指点
- javac命令参数encoding是给什么编码,有什么作用,unicode和utf-8有什么关系
- 问问问,我最近学JAVA,有关网络数据库的。谁给指点下用什么教材?谢
- class TelnetOutputStream not found
- 请看一段代码,jcreator pro老说我没有声明,不知如何?编译通过就给分!
- 怎样将UTF-8码的String转换成unicode!!!!!
- 问几个土问题,可以吗?
- 请问org.apache.jasper.servlet.JspServlet在哪个包中?
300=256+44
当然是44了
0x打头的是十六进制数,而十六进制数是没有小数的,也就是说不能带小数点的,0x23.0当然错误
补码二进制使用最高位作为符号位,0表示正,1表示负,即00000001是正数,10000001是负数
将十进制转换成补码的规则是这样的:
先将十进制数除去符号转换成普通的二进制,其位数为总位数减一,这里的总位数就是指用多少位去表示这个数,因为最高位用来表示符号,故减去1。如16位int数转换,在这里就是15位,最高位是符号位。
然后,如果是正数的话不变。如果是负数的话,所有位取反,然后最低位加1,得到的结果最高位若有进位,则去掉。
最后将符号位加到最高位,就得到了补码二进制数。
如-128,若转换成8位二进制是10000000,去掉最高位,剩下的是7位的0000000,取反得到1111111,最低位加1得到8位的10000000,最高位有进位,去掉进位,得到7位的0000000,把符号位放到最高位,得到8位的10000000
128(int)->0000000010000000(16bit) -> 10000000(8bit) -> -128(byte)