整数的第一位表示符号位。
1 正整数
正整数在计算机中直接用它的二进制存储,例如:
short s = 3;3 = 2^1 + 2^0
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
就到这里吧,接下来会看看浮点数,上班去咯。
原文地址:http://blog.csdn.net/xufeng0991/article/details/39022083