码迷,mamicode.com
首页 > 其他好文 > 详细

计算机基础(1)-原码、反码、补码

时间:2016-04-04 14:37:41      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

一、概念理解

1.机器数

一个数在计算机中的二进制表上形式,叫做这个数的机器数;

机器数是带符号的,最高位存放符号(0正,1负);

00000011和10000011就是机器数;

2.真值

将带符号的机器数对应的真正值称为机器数的真值;

00000011的真值是+1;

10000011的真值是-1;

3.原码

原码就是符号位加上真值的绝对值;

[+1]=[0000 0001]

[ -1]=[1000 0001]

4.反码

正数的反码是其本身;

负数的反码是在其原码的基础上,符号位不变,其余各个位取反;

[+1]=[0000 0001] = [0000 0001]

[- 1]=[1000 0001] = [1111 1110]

5.补码

正数的补码是其本身;

负数的补码是在反码的基础上+1;

[+1]=[0000 0001] = [0000 0001]= [0000 0001]

[- 1]=[1000 0001] = [1111 1110]= [1111 1111]

二、为什么使用原码、反码、补码

1.因为计算机只知道加法、对于减法就是加上一个负数;

2.为了是计算机运算设计更加简单,也将符号位参与运算;

3.使用原码做运算

1-1=1+(-1)=[0000 0001] + [1000 0001] = [1000 0010] = – 2

得出结论:使用原码计算减法,让符号位参与计算,结果是不正确的

4.使用反码做运算

1-1=1+(-1)=[0000 0001]+[1111 1110]=[1111 1111] = [1000 0000] = –0

得出结论:使用反码计算减法,解决了真值部分的不正确问题,唯一问题是“0”这个特殊值上,0带符号是没有意义的

[0000 0000] = [1000 0000] = 0,且0的反码有两种表示形式

5.使用补码做运算

1-1=1+(-1)=[0000 0001]+[1111 1111]= [0000 0000]=[0000 0000]= 0

这样用0用[0000 0000]表示,而用[1000 0000]表示-128

(-1)+(-127)=[1000 0001]+[1111 1111]=[1111 1111]+[1000 0001]=[1000 0000]

实际上是使用以前的-0的补码来表示-128,所以-128并没有原码和反码

得出结论:使用补码计算,不仅修复了0的符号存在两个编码问题,而且还能多表示一个最低数

三、原码、反码、补码表示的范围

原码:

第一位是符号位,所有8位二进制的取值范围是:

[1111 1111,0111 1111] 即 [-127,127]

反码:

反码是通过原码得到的,所以范围和原码一样,也是[-127,127]

补码:

补码比反码多了一个最低数,即范围是[-128,127]

计算机基础(1)-原码、反码、补码

标签:

原文地址:http://www.cnblogs.com/2star/p/5351892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!