y0的补码码为00110100,那—y0的补码码是什么

查看: 976|回复: 2
原码、反码与补码及其意义
签到天数: 7 天[LV.3]偶尔看看II
(1)数值数据的表示
我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。机器数把真值的符号数字化,通常用最高位表示符号,0表示正,1表示负。例如,假设机器数为8位,最高位是符号位,那么在定点整数的情况下,010011的真值分别为十进制数+46和-19。
(2)原码:
一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。
例如:假设机器数的位数是8,那么:[+17]原= [-39]原=
值得注意的是,由于
1_4_4_clip_image002_0000.gif (419 Bytes, 下载次数: 0)
08:50 上传
所以数0的原码不唯一,有“正零”和“负零”之分。
在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如:
[+45]反 = [+45]原 =
在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如:
注意:数0的补码的表示是唯一的,即[0]补=[+0]补=[-0]补=
现在我们来看看引进原码、反码与补码这几个概念到底有什么意义。先看下面的例子。例如:X = 52,Y = 38,求X – Y的值。
现在我们看看[X]补 + [-Y]补 等于多少?
[52]补:   0 0 1 1 0 1 0 0
[-38]补:+) 1 1 0 1 1 0 1 0
      1 0 0 0 0 1 1 1 0
我们可以看到,最高位丢失后,结果(14)正是52-38的值。从这里我们不难体会到通过补码可以把减法运算变成加法运算来做。这样做有什么意义呢?实事求是地说,引入补码意义非同寻常,可以说是先辈们智慧的结晶。因为,通过补码运算,可以把减法运算变成加法运算;而乘法可以用加法来做,除法可以转变成减法。这样一来,加、减、乘、除四种运算“九九归一”了。这对简化CPU的设计非常有意义,CPU里面只要有一个加法器就可以做算术运算了。
(419 Bytes, 下载次数: 0)
08:49 上传
签到天数: 194 天[LV.7]常住居民III
感觉楼主在“补码”环节当中[+14]的补码好像表达错误,不知是吗
该用户从未签到
感谢楼主 分享长知识了 :lol
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:原文地址:http://blog.chinaunix.net/uid-495923-id-1989253.html
原码、反码与补码及其意义&
(1)数值数据的表示&
我们把一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位与机器有关,通常是8位或16位。机器数把真值的符号数字化,通常用最高位表示符号,0表示正,1表示负。例如,假设机器数为8位,最高位是符号位,那么在定点整数的情况下,010011的真值分别为十进制数+46和-19。&
(2)原码:&
一个整数的原码是指:符号位用0或1表示,0表示正,1表示负,数值部分就是该整数的绝对值的二进制表示。&
例如:假设机器数的位数是8,那么:[+17]原= [-39]原=
值得注意的是,由于所以数0的原码不唯一,有“正零”和“负零”之分。&
(2)反码&
在反码的表示中,正数的表示方法与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常,用[X]反表示X的反码。例如:&
[+45]反 = [+45]原 =
(3)补码&
在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如:&
[+14]补 =
注意:数0的补码的表示是唯一的,即[0]补=[+0]补=[-0]补=
现在我们来看看引进原码、反码与补码这几个概念到底有什么意义。先看下面的例子。例如:X = 52,Y = 38,求X – Y的值。&
[-Y]补 = &
现在我们看看[X]补 + [-Y]补 等于多少?&
[52]补:   0 0 1 1 0 1 0 0
[-38]补:+) 1 1 0 1 1 0 1 0&
      1 0 0 0 0 1 1 1 0
我们可以看到,最高位丢失后,结果(14)正是52-38的值。从这里我们不难体会到通过补码可以把减法运算变成加法运算来做。这样做有什么意义呢?实事求是地说,引入补码意义非同寻常,可以说是先辈们智慧的结晶。因为,通过补码运算,可以把减法运算变成加法运算;而乘法可以用加法来做,除法可以转变成减法。这样一来,加、减、乘、除四种运算“九九归一”了。这对简化CPU的设计非常有意义,CPU里面只要有一个加法器就可以做算术运算了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:20316次
排名:千里之外
原创:17篇
转载:11篇
(1)(1)(5)(10)(3)(3)(2)(1)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
什么是一个数的原码,反码,补码?RT
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
在计算机内部表示二进制数的方法称为数值编码,把一个数及其符号在机器中的表示加以数值化,称为机器数.机器数所代表的数称为数的真值.
表示一个机器数,应考虑以下三个因素:
1.机器数的范围
字长为8位,无符号整数的最大值是()B=(255)D,此时机器数的范围是0~255.
字长为16位,无符号整数的最大值是
(1111)B=(FFFF)H=(65535)D
此时机器数的范围是0~65535.
2.机器数的符号
在算术运算中,数据是有正有负的,将这类数据称为带符号数.
为了在计算机中正确地表示带符号数,通常规定每个字长的最高位为符号位,并用0表示正数,用1表示负数.
3.机器数中小数点的位置
在机器中,小数点的位置通常有两种约定:
一种规定小数点的位置固定不变,这时的机器数称为“定点数”.
另一种规定小数点的位置可以浮动,这时的机器数称为“浮点数”.
正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值.用这样的表示方法得到的就是数的原码.
【例1】当机器字长为8位二进制数时:
X=+1011011
Y=+1011011
[+1]原码=
[-1]原码=
[+127]原码=
[-127]原码=
原码表示的整数范围是:
-(2n-1-1)~+(2n-1-1),其中n为机器字长.
则:8位二进制原码表示的整数范围是-127~+127
16位二进制原码表示的整数范围是-32767~+32767
对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反.【例2.14】当机器字长为8位二进制数时:
X=+1011011
Y=-1011011
[+1]反码=
[-1]反码=
[+127]反码=
[-127]反码=
负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式.
反码表示的整数范围与原码相同.
正数的补码与其原码相同,负数的补码为其反码在最低位加1.
【例2】(1)X=+1011011
(2) Y=-1011011
(1)根据定义有:
(2) 根据定义有: [Y]原码=
补码表示的整数范围是-2n-1~+(2n-1-1),其中n为机器字长.
则:8位二进制补码表示的整数范围是-128~+127
16位二进制补码表示的整数范围是-32768~+32767
当运算结果超出这个范围时,就不能正确表示数了,此时称为溢出.
7.补码与真值之间的转换
正数补码的真值等于补码的本身;负数补码转换为其真值时,将负数补码按位求反,末位加1,即可得到该负数补码对应的真值的绝对值.
【例3】[X]补码=B,[X]补码=B,分别求其真值X.
(1)[X]补码代表的数是正数,其真值:
X=+1011001B
=+(1×26+1×24+1×23+1×20)
=+(64+16+8+1)
=+(89)D
(2)[X]补码代表的数是负数,则真值:
X=-([1011001]求反+1)B
=-(0100111)B
=-(1×25+1×22+1×21+1×20)
=-(32+4+2+1)
=-(39)D
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 补码的优点 的文章

 

随机推荐