首页 > 代码库 > 整数在计算中的存储和运算

整数在计算中的存储和运算

整数的第一位表示符号位。

1 正整数

正整数在计算机中直接用它的二进制存储,例如:

short s = 3;
3 = 2^1 + 2^0
短整型一般为2个字节,即16位,它的对应的存储方式为:

0 000 0011

所以,短整型的表示范围为:-2^15  ~ +2^15

0是个特例,它有两种表示方式:

1 000 0000

0 000 0000

所以,短整型一共只有2^16 - 1 个数。


再看整型,整型的存储为4个字节,32位

int i = 7;
7 = 2^2 + 2^1 + 2^0

即:

0 000 0000 0000 0111


为了表述简单,以下统一用short型。


2 负整数

在说负数之前先说两个概念:

原码:符号位加二进制;

反码:正数为本身,负数符号位加二进制取反(即0变为1,1变为0);

补码:正数为本身,负数未取反加一;

例如:

原码:

10 = 2^3 + 2^1:0 000 1100

-10:1 000 1100

反码:

10 :0 000 1100

-10:1 111 0011

补码:

10:0 000 1100

-10:1 111 0100


计算机中,数据统一用补码的方式来存储和表示。


例如:-5

原码:1 000 1001

反码:1 111 0110

补码:1 111 0111

 它的存储方式即:1 111 0111

例如:0

0有两种表示方法,即+0和-0;

原码:

1 000 0000

0 000 0000

反码:

1 000 0000

0 111 1111 

补码:

1 000 0000

1 000 0000 

所以0在计算中的表示方法也是唯一的,+0和-0最终都是1 000 0000


3 整数之间的运算

实际上计算机只会做一种运算:加法运算

减法:加法,加上一个负数

乘法:加法,重复做加法

除法:减法,重复做减法


所以,我们来研究一下加法运算。计算机中数据的表示和存放方式都是以补码的形式,

计算的时候也是用补码来进行运算,结果也是补码。表示方式中符号位不参与运算,运算中符号位也参入。

首先看正数,例如:1 +  2

1:0 000 0001

2:0 000 0010

--------------------

      0 000 0011

结果为:0 000 0011,十进制3

再看正数与负数,也是减法运算,例如:1 - 2 = 1 +(-2)

1: 0 000 0001

-2:1 111 1110

---------------------

        1 111 1111

结果为:1 111 1111

负数由补码求原码的方式:减一取反

例如,上述结果:

补码:1 111 1111

反码:1 111 1110

原码:1 000 0001 即 十进制的-1


就到这里吧,接下来会看看浮点数,上班去咯。


整数在计算中的存储和运算