add(BigDecimal)
BigDecimal对象中的值相加,返回BigDecimal对象
subtract(BigDecimal)
BigDecimal对象中的值相减,返回BigDecimal对象
multiply(BigDecimal)
BigDecimal对象中的值相乘,返回BigDecimal对象
divide(BigDecimal)
BigDecimal对象中的值相除,返回BigDecimal对象
toString()
将BigDecimal对象中的值转换成字符串
doubleValue()
将BigDecimal对象中的值转换成双精度数
floatValue()
将BigDecimal对象中的值转换成单精度数
longValue()
将BigDecimal对象中的值转换成长整数
intValue()
将BigDecimal对象中的值转换成整数

一个数在计算机中的表示形式是二进制,这个数其实就叫机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0, 负数为1。比如,十进制中的数 +7 ,计算机字长为8位,转换成二进制就是00000111。如果是 -7 ,就是 10000111 。一个存储的二进制码分原码、反码、补码。计算机都是用补码存储,在计算的时候,如果是减法,可以把减法看成加法。

一、原码(0表示正数,1表示负数)
x=1100110,则[X]原=01100110
x=-1100111,则[X]原=11100111
无符号位 0~2n-1 00000000~11111111 0~255
有符号位 -2(n-1)-1 ~ 2(n-1)-1 11111111~01111111 -127~+127
二、反码(正数的反码就是自身,负数的反码除符号位外,其他各位求反)
x=1100110,则[X]反=01100110
x=-1100111,则[X]反=10011000
反码肯定属于有符号位,相当于上面有符号位求反
10000000~01111111 -127~+127 -2(n-1)-1~2(n-1)-1
三、补码(正数的补码还是自身,负数的补码,符号位不变,其余取反,然后最低位加1)
x=1100110,则[X]补=01100110
x=-1100111,则[X]补=10011001
10000001~01111111 -128~+127 -2(n-1)~2(n-1)-1
四、为何要使用原码, 反码和补码
我们先来看1和-1对应的原码, 反码和补码,对于正数因为三种编码方式的结果都相同:
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
可见原码, 反码和补码是完全不同的,为何还会有反码和补码呢?
首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位进行加减。 但是对于计算机, 加减乘数已经是最基础的运算,,设计得尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法.。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 ,所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。

原码的征服数相加如1+(-1)为00000001+10000001=10000010明显结果不正确

因此引入补码如1+(-1)为00000001+11111110=11111111在转换为原码就为1000000但是对于0来说却有两种表达方式了00000000和1000000

为了解决这个问题由引入了补码;00000001+11111111=0000000

 

 

一、原码(0表示正数,1表示负数)

x=1100110,则[X]原=01100110

x=-1100111,则[X]原=11100111

无符号位 0~2n-1 00000000~11111111 0~255

有符号位 -2(n-1)-1 ~ 2(n-1)-1 11111111~01111111 -127~+127

二、反码(正数的反码就是自身,负数的反码除符号位外,其他各位求反)

x=1100110,则[X]反=01100110

x=-1100111,则[X]反=10011000

反码肯定属于有符号位,相当于上面有符号位求反

10000000~01111111 -127~+127 -2(n-1)-1~2(n-1)-1

三、补码(正数的补码还是自身,负数的补码,符号位不变,其余取反,然后最低为加1)

x=1100110,则[X]补=01100110

x=-1100111,则[X]补=10011001

10000001~01111111 -128~+127 -2(n-1)~2(n-1)-1

四、为何要使用原码, 反码和补码

我们先来看1和-1对应的原码, 反码和补码,对于正数因为三种编码方式的结果都相同:

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

可见原码, 反码和补码是完全不同的,为何还会有反码和补码呢?

首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位进行加减。 但是对于计算机, 加减乘数已经是最基础的运算,,设计得尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法.。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 ,所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。