当前位置:编程学习 > JAVA >>

java的两道小计算

1.第一道





2.第二道
--------------------编程问答-------------------- 第一题 -7676
第二题 65535
做的话,化成二进制来计算,比较明确,然后注意符号位。 --------------------编程问答--------------------
引用 1 楼 aftermisak 的回复:
第一题 -7676
第二题 65535
做的话,化成二进制来计算,比较明确,然后注意符号位。


求具体做法·· --------------------编程问答-------------------- 第一种结果:123456转成二进制11110001001000000有17位,超过short类型的16位,取低位16位,舍去最前面的1,之后十进制为57920,再减去65536(2的16次方),所以结果为-7616 --------------------编程问答--------------------
引用 3 楼 yanxing2012 的回复:
第一种结果:123456转成二进制11110001001000000有17位,超过short类型的16位,取低位16位,舍去最前面的1,之后十进制为57920,再减去65536(2的16次方),所以结果为-7616
请问,为什么57920要减去65536 --------------------编程问答--------------------
引用 3 楼 yanxing2012 的回复:
第一种结果:123456转成二进制11110001001000000有17位,超过short类型的16位,取低位16位,舍去最前面的1,之后十进制为57920,再减去65536(2的16次方),所以结果为-7616


同求 --------------------编程问答-------------------- 第二道:
http://bbs.csdn.net/topics/390490197 --------------------编程问答--------------------
引用 4 楼 u010997403 的回复:
Quote: 引用 3 楼 yanxing2012 的回复:

第一种结果:123456转成二进制11110001001000000有17位,超过short类型的16位,取低位16位,舍去最前面的1,之后十进制为57920,再减去65536(2的16次方),所以结果为-7616
请问,为什么57920要减去65536


引用 5 楼 cjh94520 的回复:
Quote: 引用 3 楼 yanxing2012 的回复:

第一种结果:123456转成二进制11110001001000000有17位,超过short类型的16位,取低位16位,舍去最前面的1,之后十进制为57920,再减去65536(2的16次方),所以结果为-7616

同求




这样解释吧,short有符号的,57920转成二进制1110001001000000,最高位的1代表符号位,为负的,再把它转成补码1,001110111000000,再换成十进制既得结果-7616 --------------------编程问答-------------------- http://bbs.csdn.net/topics/390490197正如这里面所说的,java数据以补码存储计算的 --------------------编程问答-------------------- 楼主你说明地方用到这个 开发说明项目的啊
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,