计算机中的原码、反码和补码
2006-11-09 16:27
309 查看
作者:indian
版本:v1.1
修订:2012年11月11日16:10:29
出处:http://indian.blog.163.com/blog/static/1088158200610942745817/
版权:作者保留对本文的一切修改、发布等权力。任何人想要转载本文部分或全部内容时,必须保留包括作者、版本、修订、出处、版权,共五项信息。对本文的参考引用,则不受限制。
关键词:原码,反码,补码
在介绍原码、反码、补码前,先了解下机器数和真值。
一、机器数和真值
1、机器数
数在计算机中的二进制表示形式就称为机器数。机器数是带符号的,在计算机用一个数的最高位存放符号(0为正,1为负),这样就将数的符号数值化了。
比如,十进制中的数 +5 ,计算机字长为8bits,转换成二进制就是00000101。如果是 -5 ,就是 10000101 。
那么,这里的 00000101 和 10000101 就是机器数。
2、真值
因为符号占据一位,机器数的形式值就不等于真正的数值。例如上面的有符号数 10000101,其最高位1代表负,其真正数值是 -5 而不是形式值133(10000101转换成十进制等于133)。所以,为区别起见,带符号位的机器数对应的真正数值称机器数的真值。
例:00100001的真值 = 0 0100001 = +33,10100011的真值 = 1 0100011 = -35
二、计算机符号数的表示方法
符号数值化后,为了方便地对机器数进行算术运算,提高运算速度,人们设计了符号数的各种编码方法,最常见的有原码、反码和补码。
1、原码
原码就是符号位加上真值的绝对值。简单说,就是符号位加上数的二进制表示。比如,+3(以8bit为例),符号位为0,3转化为二进制就是11,那么 +3 的原码就是00000011(不足部分补0)。同理, -3,符号位为1,3转化为二进制就是11,那么 -3 的原码就是10000011(不足部分补0)。即:
[+3] = [00000011]原
[-3] = [10000011]原
2、反码
一个负数的符号位不懂,其余位取反,就是机器数的另一种表示形式——反码。正数的反码与原码形式一样。
[+3] = [00000011]原 = [00000011]反
[-3] = [10000011]原 = [11111100]反
3、补码
负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。
[+3] = [00000011]原 = [00000011]反 = [00000100]补
[-3] = [10000011]原 = [11111100]反 = [11111101]补
至于为什么要使用原码、反码和补码,见我的另一篇日志《为什么要使用原码、反码、补码》
~全文完~
indian
2006年11月9日 16:27 发表。
2012年11月11日16:10:29 整理更新。
版本:v1.1
修订:2012年11月11日16:10:29
出处:http://indian.blog.163.com/blog/static/1088158200610942745817/
版权:作者保留对本文的一切修改、发布等权力。任何人想要转载本文部分或全部内容时,必须保留包括作者、版本、修订、出处、版权,共五项信息。对本文的参考引用,则不受限制。
关键词:原码,反码,补码
在介绍原码、反码、补码前,先了解下机器数和真值。
一、机器数和真值
1、机器数
数在计算机中的二进制表示形式就称为机器数。机器数是带符号的,在计算机用一个数的最高位存放符号(0为正,1为负),这样就将数的符号数值化了。
比如,十进制中的数 +5 ,计算机字长为8bits,转换成二进制就是00000101。如果是 -5 ,就是 10000101 。
那么,这里的 00000101 和 10000101 就是机器数。
2、真值
因为符号占据一位,机器数的形式值就不等于真正的数值。例如上面的有符号数 10000101,其最高位1代表负,其真正数值是 -5 而不是形式值133(10000101转换成十进制等于133)。所以,为区别起见,带符号位的机器数对应的真正数值称机器数的真值。
例:00100001的真值 = 0 0100001 = +33,10100011的真值 = 1 0100011 = -35
二、计算机符号数的表示方法
符号数值化后,为了方便地对机器数进行算术运算,提高运算速度,人们设计了符号数的各种编码方法,最常见的有原码、反码和补码。
1、原码
原码就是符号位加上真值的绝对值。简单说,就是符号位加上数的二进制表示。比如,+3(以8bit为例),符号位为0,3转化为二进制就是11,那么 +3 的原码就是00000011(不足部分补0)。同理, -3,符号位为1,3转化为二进制就是11,那么 -3 的原码就是10000011(不足部分补0)。即:
[+3] = [00000011]原
[-3] = [10000011]原
2、反码
一个负数的符号位不懂,其余位取反,就是机器数的另一种表示形式——反码。正数的反码与原码形式一样。
[+3] = [00000011]原 = [00000011]反
[-3] = [10000011]原 = [11111100]反
3、补码
负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。
[+3] = [00000011]原 = [00000011]反 = [00000100]补
[-3] = [10000011]原 = [11111100]反 = [11111101]补
至于为什么要使用原码、反码和补码,见我的另一篇日志《为什么要使用原码、反码、补码》
~全文完~
indian
2006年11月9日 16:27 发表。
2012年11月11日16:10:29 整理更新。
相关文章推荐
- 计算机中的位操作、补码、反码、原码
- 计算机的原码, 反码和补码
- 计算机中整数的表示:原码、反码、补码
- 深入理解计算机系统-之-数值存储(三)-- 原码、反码、补码和移码详解
- 原码、反码、补码,计算机中负数的表示
- 计算机原码、反码、补码、移码
- 原码、反码、补码,计算机中负数的表示
- 计算机只会加法,原码,反码,补码和移码的相关概念
- 原码、反码、补码,计算机中负数的表示
- 计算机的原码, 反码和补码.
- 【计算机基础】原码, 反码, 补码 详解
- 604C - 计算机中的原码、反码和补码
- 计算机原码、反码、补码详解
- 聊一聊计算机的原码,反码,补码
- 计算机中的原码、反码、补码、溢出问题
- 计算机组成原理:十进制、原码、反码、补码的转换关系
- 计算机中的原码、反码和补码
- 计算机底层基础----原码、反码、补码以及为什么要用反码和补码
- 计算机中数值型数据二进制形式存储过程中的原码,反码与补码
- 原码、反码和补码(C语言 计算机原理)