问题描述
1已知long型的最大值为9223372036854775808,求9223372036854775808+92233720368547758082在命令行下输入“Ilovechina”,则publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubSystem.out.println(args[0]);;System.out.println(args[1]);;System.out.println(args[2]);;System.out.println(args[3]);}3已知数据库中的存取数据:codeVARCHARdatevarchartypeVARCHARdatavarchar500数据库中一个code对应一个date一个type可以找出小于10个的char,数据库中总共有500万个data,且每天要读取上千成次,让你写一个高效的读取方法(伪代码)//通过code获得datapublicStringgetDataBycode(Stringcode){}//通过type获得datapublicStringgetDataByType(Stringcode){}//顺便问一下,在命令行下,如何进行某个目录,并且编译这个目录下的java文件?
解决方案
解决方案二:
System.out.println(args[3]);第二个跑出异常?下标越界?
解决方案三:
第一题:转化为二进制1111111....1111111111111....111111莫非结果为100000...00000去掉溢出的位1结果为0??
解决方案四:
引用2楼id19870510的回复:
第一题:转化为二进制1111111....1111111111111....111111莫非结果为100000...00000去掉溢出的位1结果为0??
丢人了:longvv=Long.MAX_VALUE+Long.MAX_VALUE;System.out.println(vv);试了一下结果为-2囧。。。。哪位大侠解释一下
解决方案五:
第一题使用BigDecimalBigDecimalb1=newBigDecimal("9223372036854775808");BigDecimalb2=newBigDecimal("9223372036854775808");System.out.println(b1.add(b2));
第二题System.out.println(args[3]);数组越界
解决方案六:
BigDecimalargs[3]是为定义的
解决方案七:
引用3楼id19870510的回复:
引用2楼id19870510的回复:第一题:转化为二进制1111111....1111111111111....111111莫非结果为100000...00000去掉溢出的位1结果为0??丢人了:longvv=Long.MAX_VALUE+Long.MAX_VALUE;System.out.print……
你的想法差不多啊,不过算术……Long.MAX_VALUE是第1位为0后面63位全为1,两个这样的数加起来么就是前面63位都为1最后1位是0,也就是-2
解决方案八:
第1题简单的说下计算机存的是补码。。。最大整数9223372036854775801111...111132位+1111...1111=10000...000033位(补码,1是符号位)但是取出来的是原码补码到原码10000...0000->10000...0010=-2
解决方案:
!!!是64位
解决方案:
引用6楼zhuzeitou的回复:
引用3楼id19870510的回复:引用2楼id19870510的回复:第一题:转化为二进制1111111....1111111111111....111111莫非结果为100000...00000去掉溢出的位1结果为0??丢人了:longvv=Long.MAX_VALUE+Long.MAX_V……
哦。问题欠考虑了嘿不好意思。太不细心了
解决方案:
第三个我想的是:批量查询还有多线程查询
解决方案:
该回复于2010-12-07 09:18:26被版主删除
解决方案:
认真看看
解决方案:
关注笔试面试题中......
解决方案:
1、BigInteger2、System.out.println(args[3]);会抛出ArrayIndexOutOfBoundsException3、不知道…………
解决方案:
3.我认为思路应该是通过type可以找出小于10个的char,再依据code在这些char中查找data.数据量大应尽量增加约束条件(仅供参考)在命令行下,用C:DocumentsandSettingsAdministrator>cdH:eclipseeclipseC:DocumentsandSettingsAdministrator>h:进入某个目录,并且编译这个目录下的java文件用javac命令
解决方案:
引用4楼vivazhao的回复:
第一题使用BigDecimalJavacodeBigDecimalb1=newBigDecimal("9223372036854775808");BigDecimalb2=newBigDecimal("9223372036854775808");System.out.println(b1.add(b2));第二题System.out.pr……
正解
解决方案:
楼主发错题目了第二题是没有System.out.println(args[3]);的命令行输入javatestilovealibaba
解决方案:
nothinggonnatobewrong
解决方案:
longl=0xFFFFFFFF+0xFFFFFFFF
解决方案:
第一题:使用BigDecimal第二题:数组越界·或者说是你的参数并不能满足方法里的数组的长度·第三题:说不清楚你的小问题:javac类名.java---编译java类名----执行
解决方案:
题目出的真好;我也做不出来;
解决方案:
引用20楼cenhuineng的回复:
第一题:使用BigDecimal第二题:数组越界·或者说是你的参数并不能满足方法里的数组的长度·第三题:说不清楚你的小问题:javac类名.java---编译java类名----执行
都不明白第一题出题者的意思...
解决方案:
引用楼主xautswfc的回复:
//顺便问一下,在命令行下,如何进行某个目录,并且编译这个目录下的java文件?
常用命令:cd进入某个文件夹dir列出该文件夹下文件cd返回到根目录cd..返回上级目录。
解决方案:
引用6楼zhuzeitou的回复:
引用3楼id19870510的回复:引用2楼id19870510的回复:第一题:转化为二进制1111111....1111111111111....111111莫非结果为100000...00000去掉溢出的位1结果为0??丢人了:longvv=Long.MAX_VALUE+Long.MAX_V……
顶!!最低位为0,其他位为1,第一位符号位为1,则为负数,下面各位取补码,即取反+1,得0x10,为2,所以结果是-2。
解决方案:
第一题,不管怎么解释。long型的最大数最后一位不是8而是7.楼主给出的数有点问题。
解决方案:
在这里考虑的是实际问题,也就是说考虑有符号数,所以long型的最大整数,不能用11....11(64个1,其表示最大的负数,-1,最小负数的表示为10..00)表示,最高位为1表示负数,正确的表示为01...11(63个1)。所以加法应该是01....11+01....11=11....10而这个数也就是-2的补码。2的补码为00..0010。保留最后一个1其余按位取反就是-2的补码。
解决方案:
顶~~~