大数加法

 

今天一个朋友豌豆荚面试的唯一一个算法题:大数加法,写程序或者说思路。

下面的一些理解来自网络。

 

1.大数,指的是超过int 32位的数。4个字节,最高位是符号位,1用来表负数。剩下31个bit来表示数值,1000...00(31个0)~11111...11(32个1),不是2的31次方多个变化吗?每一个变化用来表示一个负数。
至于每一种变化表示那个负数,那你还要学习一下原码、反码和补码的知识。

 

2.我记得Integer类有两个静态常量
1.MAX_VALUE值为 2的31次方-1 的常量,它表示 int 类型能够表示的最大值。
2.MIN_VALUE 
 值为 -2的31次方 的常量,它表示 int 类型能够表示的最小值。

 

3.java中int是32位 --> 数值范围长度是2的32次方
--> java中没有unsign数值的概念,因此正数和负数各占一半
--> 负数:[-2的31次方, 0)
    正数:[0, 2的31次方-1]   将0作为正数处理

 

4.负数的值是这样得出的:JAVA中int是4个字节,
数0 = 00...0000(共32个0)
数-1= 11...1111(共32个1)
数-2= 11...1110(共31个1,最后一个是0)
数-3= 11...1101
数-4= 11...1100(共30个1,最后两个是0)
这样排下去。。。
最后一个负数[最小]是-2的31次方=100..00(一个1,最后31个是0)

 

5.我个人觉得是否和下面的2个类有关系,可以看看。

  BigInteger   bi ;
  BigDecimal   bd ;

 

 

延伸:大数阶乘的实现思路及代码

http://www.voidcn.com/article/p-ojfkaztt-cu.html

 

 

参考链接

 http://www.voidcn.com/article/p-thewnqim-cu.html

 http://www.cnblogs.com/zhangchaoyang/articles/2727225.html

相关文章

自1998年我国取消了福利分房的政策后,房地产市场迅速开展蓬...
文章目录获取数据查看数据结构获取数据下载数据可以直接通过...
网上商城系统MySql数据库设计
26个来源的气象数据获取代码
在进入21世纪以来,中国电信业告别了20世纪最后阶段的高速发...