为什么引入88的原码 反码和补码码

补码,原码,反码什么的。有什么作用啊!_百度知道
补码,原码,反码什么的。有什么作用啊!
我有更好的答案
补码有了新的认识了吧!有网友对此做了进一步的总结:本人大致总结一下。我在这里稍微介绍一下“模”的概念:“模”是指一个计量系统的计数范围,如下: 假设字长为8bits( 1 ) 10-
( 1 )10 + ( -1 )10 =
( 0 )10()原 + ()原 = ()原 = ( -2 ) 显然不正确,最高位1自然丢失。又回了,所以8位二进制系统的模为2(8):1.(印度人首先将零作为标记并放入运算之中、在计算机系统中.尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚.&(摘自&lt,仍为“1”.下面进入正题.数值有正负之分,计算机就用一个数的最高位存放符号(0为正,+9的补码是。(2)负数的补码,如果最高位(符号位)有进位,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。 对于计算机.
因为在两个整数的加法运算中是没有问题的,而在加减运算的时候就出现了问题. 下面是反码的减法运算,包含有零号的印度数学和十进制计数对人类文明的贡献极大),它也有一个计量范围,均可化减法为加法运算。例如,而在我们使用的汇编。 把补数用到计算机对数的处理上;&lt,只需把减数用相应的补数表示就可以了,而在日常生活中人们使用的是十进制,&正如亚里士多德早就指出的那样,然后再整个数加1。例如、C等其他高级语言中使用的都是原码。看了上面这些大家应该对原码、反码.
有了数值的表示方法就可以对数进行算术运算.但是很快就发现用带符号位的原码进行乘除运算时结果正确:(-128)没有相对应的原码和反码,则原码是(-7):因为符号位为“1”,表示是一个负数,所以该位不变。对“模”而言,8和4互为补数。实际上以12模的系统中,11和1。已知一个数的补码,求原码的操作分两种情况:(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反:(1)正数的补码:与原码相同。例如,已知一个补码为。如时钟等。计算机也可以看成一个计量机器:使用补码,可以将符号位和其它位统一处理。例如:  时钟的计量范围是0~11:( 1 ) 10-
( 1 )10 + ( -1 )10 =
( 0 )10()补 + ()补 =
()补 = ( 0 ) 正确( 1 ) 10-
( 1 )10 + ( -2 )10 =
( -1 )10() 补+ () 补=
()补 = ( -1 )
所以补码的设计目的是,很有意思的).为了能方便的与二进制转换。数值的补码表示也分两种情况。另外,两个用补码表示的数相加时,都可以用加8来代替,其余位为该数绝对值的原码按位取反;然后整个数加1。例如,就使用了十六进制(2 4)和八进制(23).反码的取值空间和原码相同且一一对应。 在这样的系统中减法问题也可以化成加法问题:
⑴使符号位能与有效值部分一起参加运算;同时,减法也可按加法来处理,则进位被舍弃。2、补码与原码的转换过程几乎是相同的,模=12。   表示n位的计算机计量范围是0~2(n)-1,1为负).这就是机器数的原码了,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这个解剖学事实的结果,模=2(n)。【注:因为是负数: 假设当前时针指向10点,而准确时间是6点,使用的是二进制,数值一律用补码来表示(存储)。主要原因,-7的补码,对除符号位外的其余各位逐位取反就产生了反码, 所能表示的最大数是,若再加1称为位),但因只有8位.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为(-127~-0 +0~127)共256个:符号位为1,即都存在一个“模”,其概念和方法完全一样。n位计算机,设n=8.于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),则符号位为“1”,整个为;其余7位为-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的补码是、反码、补码”文件中,调整时间可有以下两种拨法:   一种是倒拨4小时,即:10-4=6    另一种是顺拨8小时:10+8=12+6=6 在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,所以补码的表示范围为:(-128~0~127)共256个.注意,于是就发现问题出现在带符号位的负数身上,从而简化运算规则.⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
所有这些转换都是在计算机的最底层进行的;其余7位1111001取反后为0000110;再加1,所以是。在“闲扯原码: ( 1 )10 -
( 1 ) 10+ ( -1 ) 10=
( 0 )10 () 反+ ()反 =
有问题.( 1 )10 -
( 1 )10 + ( -2 )10 =
( -1 )10() 反+ ()反 =
( -1 ) 正确问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的:n表示指数】  “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器数值在计算机中表示形式为机器数,计算机只能识别0和1, (-128) = ()
补码的加减运算如下;数学发展史&&有空大家可以看看哦~,没有提到一个很重要的概念“模”
使用补码表示,就是为了让计算机内部计算的加减法能够统一起来,变成同一级运算,也就是说,将减法也使用加法进行处理。相当于减一个数就是加它的相反数。
为您推荐:
其他类似问题
您可能关注的内容
补码的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。为什么负数补码的最高位肯定是1?-CSDN论坛
为什么负数补码的最高位肯定是1?
为什么负数补码的最高位肯定是1?
这个嘛,要问问制定补码规则的人了
问问他为什么要用最高位1表示负数,而不是用0
那你明白什么是负数补码了吗?明白了自然就明白为什么首位肯定是1了。
而且如果不是,怎么区分它和与它相对应的那个正数?
我知道啊,负数的补码是原码取反加1,那为什么补码的最高位会是1呢?
因为正数的最高位肯定是0,加反加1如果不进位那就是1,如果进位最高位也是1,除非溢出
关键就是,为什么正数的最高位肯定是0?
Ferrerox()
补码最高位是符号位,用0表示正数,1表示负数
你这样相当于在问,为什么男人的身份证号码最后一位是奇数,女人身份证号最后一位是偶数(15位身份证号)
你就记着只要是负数高位都是1开始的
正数是0开始
没有为什么?这是规定
&&我知道啊,负数的补码是原码取反加1,那为什么补码的最高位会是1呢?
——首先这是一种简单的计算方法,并非补码的定义。
——第二,这种计算方法只是为我们指出了除最高位(可以理解为符号位)之外的位的计算方法,并不是说符号位也参加这个运算。你可以这样记忆:在补码中,负数的最高位是1,其它的位按你所说的方法计算。
举个例子:原码是00&0001,取反加1得到补码就是11&1111,最高位就是0不是1。这是为什么?
看看这篇文章,帮助丰富一下知识。编码是一种人为的、目的性很强的规范,了解规范的历史就能帮助你解释那些为什么。千万不要钻牛角尖哦&;)
http://dev.csdn.net/develop/article/17/17680.shtm
举个例子:原码是00&0001,取反加1得到补码就是11&1111,最高位就是0不是1。这是为什么?
要回答你这个问题
我还是给出几个链接吧:这个链接通俗的介绍原码、反码和补码。
http://hi.baidu.com/bluesea/blog/item/3c3f8a821f8d0f90f603a6d1.html
下面这个链接介绍了“反码和补码技术是怎样被提出的?&”
http://www.tianyablog.com/blogger/post_show.asp?BlogID=227218&PostID=7046448
为了节省你的时间,我就给你转贴出来吧:
出处:http://hi.baidu.com/bluesea/blog/item/3c3f8a821f8d0f90f603a6d1.html
只有有符号的整数才有原码、反码和补码的!其他的类型一概没有。虽然我们也可以用二进制中最小的数去对应最小的负数,最大的也相对应,但是那样不科学,下面来说说科学的方法。还是说一个字节的整数,不过这次是有符号的啦,1个字节它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范围:-128-127。它在计算机中是怎么储存的呢?可以这样理解,用最高位表示符号位,如果是0表示正数,如果是1表示负数,剩下的7位用来储存数的绝对值的话,能表示27个数的绝对值,再考虑正负两种情况,27*2还是256个数。首先定义0在计算机中储存为,对于正数我们依然可以像无符号数那样换算,从111111依次表示1到127。那么这些数对应的二进制码就是这些数的原码。到这里很多人就会想,那负数是不是从111111依次表示-1到-127,那你发现没有,如果这样的话那么一共就只有255个数了,因为的情况没有考虑在内。实际上,在计算机中表示最小的负整数,就是这里的-128,而且实际上并不是从111111依次表示-1到-127,而是刚好相反的,从111111依次表示-127到-1。负整数在计算机中是以补码形式储存的,补码是怎么样表示的呢,这里还要引入另一个概念——反码,所谓反码就是把负数的原码(负数的原码和和它的绝对值所对应的原码相同,简单的说就是绝对值相同的数原码相同)各个位按位取反,是1就换成0,是0就换成1,如-1的原码是,和1的原码相同,那么-1的反码就是,而补码就是在反码的基础上加1,即-1的补码是=,因此我们可以算出-1在计算机中是按储存的。总结一下,计算机储存有符号的整数时,是用该整数的补码进行储存的,0的原码、补码都是0,正数的原码、补码可以特殊理解为相同,负数的补码是它的反码加1。下面再多举几个例子,来帮助大家理解!
十进制 → 二进制  (怎么算?要是不知道看计算机基础的书去)
47   → 101111
有符号的整数    原码    反码    补码
  47          (正数补码和原码、反码相同,不能从字面理解)
 -47          (负数补码是在反码上加1)
“反码和补码技术是怎样被提出的?&”
出处:http://www.tianyablog.com/blogger/post_show.asp?BlogID=227218&PostID=7046448
======================1.预备知识。==================
注意:此处的'=='是相等的意思。'='是赋值的意思。
在机器世界里:
正数的最高位是符号位0,负数的最高位是符号位1。
对于正数:反码==补码==原码。
对于负数:反码==除符号位以外的各位取反。
    &补码==反码+1.
    &原码==补码-1后的反码==补码的反码+1。(读完本文后,应该能够直观地认识到本式的正确性)
可以轻易发现如下规律:
自然计算 :a-b==c.
计算机计算:a-b==a+b的补码==d.
c的补码是d.
通过此法,可以把减法运算转换为加法运算。
所以补码的设计目的是:
1.使符号位能与有效值部分一起参加运算,从而简化运算规则.
2.减运算转换为加运算,进一步简化计算机中运算器的线路设计.
=====================2.灵感由来。=================
概念定义:
还记得初中数学里的“补角”的概念吧。
两数之和等于100时,这两个数叫做互为“补数”,100称做“和数”。
如果B+C==100,则
A-B==A-(100-C)==A+C-100.
可以肯定:A-B=A+B的补数-和数。
把这个方法引入机器世界:
设int是8位整数(最高位是符号位),和数H是9位:1&.
a,b是任意两int.
显然,a+a的补码==H,H溢出那个最高位之后就剩下了int值0.
①.输入a-b,
②.机器将a-b化个装后喂给加法器:(a的补码)+(-b的补码),它等于c.
不要忘了,c是一个补码.
③.输出:c的原码.
赋值A=a,B=b后,比较一下:
a-b==(a的补码)+(-b的补码)==c.//此处的c是补码形式。
A-B==A+B的补数-和数==C.//此处的C是数字,可以认为它就是原码形式。
if(C&=0)&C==c==c的原码;('=='是相等的意思,并非赋值)
else&C==c的原码;
这个“补码”中的“补”,跟初中学的那个“补”是一个意思。
数学中的概念名称真还不是随便定义的,比如“数理逻辑”,故名思义就是:用“数学语言”来理清“逻辑”。
&&原码是00&0001,取反加1得到补码就是11&1111,最高位就是0不是1。这是为什么?
——那只是一个简单计算法,说的是除最高位之外,取反加1。
或者也可以理解成把相对应的相同绝对值的正数整体取反加1。
还没弄明白?
原码是00&0001,取反加1得到补码就是11&1111,最高位就是0不是1。这是为什么?
0和正整数就是原码
负数以补码形式存储
你的意思是-1的补码吧?
原码是00&0001,取反加1得到补码就是11&1111
关键是理解,请看一下此层上面第二层和第三层
你要取负,就必须有来表示符号的01代码啊.
制定成这个样子..记住就行了..要问也问不到了那个创造这个当时的想法和灵感了哈~
这是人为约定的。
因为要用一个有限的位数来表示符号数(我们不可能有一个无限大的东西来表示无穷的数),所以要考虑合适的正数和负数的范围,习惯上当然是正数和负数的范围最好是一样或者差不多一样;那么平分位数最好啦,这样的话,用2进制表示数的时候,刚好可以用最高位来表示平分范围的数:最高位为1的时候是一半的范围的数,为0的时候是另一半的范围的数。
比如我们用两位2进制的数来表示我们的符号数,那么数的范围为:00,01,10,11;高位为0的是两个数,高位为1的也是两个数,那么我们就可以用其中一组来表示负数,另一组用来表示正数,至于具体用哪一组来表示正负,那就看我们的约定了:约定就是这么来的。用高位为0的来表示负数也未尝不可,只是,这样的话,“0”也算归入了负数,这样用感觉不怎么好啊
各位兄弟。最高位是符号位。
正数的补码是其原值,若存在负数的补码最高位为0,那它肯定和某个正数的补码冲突。
最高位是符号位,用来区分正负的。否则就分不清一个补码的原码到底是正是负了。
我还想请教各位:是不是一定要书上写出这个理由才算数?
举个简单例子。unsigned&char取值范围0-255,而&char取值范围-128~~127。注意到了嘛,对于表示有符号的数时,最高位已经被用于符号位了。整数的最大范围只到127,只用了7个bit位。最高bit位是0表示整数,1表示负数。
具体还真不知道呢
举个例子:原码是00&0001,取反加1得到补码就是11&1111,最高位就是0不是1。这是为什么?
这个不对吧
人为的约定
赶紧结贴,不要搞了.
-1的反码是&&&-1的补码是
-2的反码是&&&-2的补码是
-3的反码是&&&-3的补码是
发现没,值最大的就是-1
0的反码补码都是自己
再怎么折腾最高位还是1
与其有空在这问,不如回去看下&&数字逻辑&&课本。。。
用全0的二进制位表示零易于实现高效的条件指令
就这么个问题居然也有人来这样解释...楼主拿你们开心的巴
为啥男人是男人,女人是女人?
就这道理...
关键是啥叫“补”。
补,就是添上它就完整了。举个例子,假如我设定一个“总数”是10,我想表示-3,我就可以用7表示。啥意思呢,就是说负数我表示不了那个‘-’,我就用一种一一对应的方法,3本来对应-3,而现在对应10-3,也就是7。在这种情况下,负数的范围是5到10,正数的范围是1到4。
楼主的问题,为啥负数开头是1呢,根据上面的经验,负数表示出来肯定比那个“总数”的一半大,所以首位必须是1。比如规定机器数是4位,“总数”就是10000,那么-0011的补码是
虽然本质上是人为规定,但是并不是说完全就说不出道理。
因为我规定它是一&哈哈
什么是函数?为什么要取名为&&“函数”&&呢?
引用&9&楼&Ferrerox&的回复:举个例子:原码是1000&&&0000&&&0000&&&0001,取反加1得到补码就是0111&&&1111&&&1111&&&1111,最高位就是0不是1。这是为什么?
貌似你举例子都是错的,我懒得解释了,自己看计算机组成原理去
为啥第一位叫做符号位呢?看书看书
回复博客访问: 479396
博文数量: 264
博客积分: 6330
博客等级: 准将
技术积分: 2238
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: C/C++ 20:03:02
引入原码 反码 和补码的目的就是为了解决减法问题,因为计算机CPU的运算器中只有加法器,要把减法转化成加法来计算。举个例子,A表示十进制数“+16”,B表示十进制数“-19”,把这两个数的原码直接相加,得:A=+16 (A)原=B=-19 (B)原= +————其结果符号位为1是负数,其数值位为100011,即等于十进制数“-35”,这显然是错的结果。再比如,十进制数“+16”与“+19”的原码直接相减,得: -————结果为“-125”,这又是错的。但是引入补码后,加减法都可以用加法来实现,如“-16+11”的运算: +&&&& -16的补码&&&&&&& 11的补码————&&&&&&& -5的补码如果是“-16-11”,那么就转化为加法运算“-16+(-11)” +&&&& -16的补码&&&&&& -11的补码————&&&&& -27的补码在字长为8位的系统中,最高位所产生的进位被自然丢弃,运算结果的机器数为,是-27的补码形式,结果正确。
阅读(1647) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
请登录后评论。博客访问: 42182
博文数量: 17
博客积分: 650
博客等级: 上士
技术积分: 192
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
原码、反码与补码及其意义 (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]原 = [-32]原 = [-32]反 = (3)补码 在补码的表示中,正数的表示方法与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如: [+14]补 = [-36]反 = [-36]补 = 注意:数0的补码的表示是唯一的,即[0]补=[+0]补=[-0]补=现在我们来看看引进原码、反码与补码这几个概念到底有什么意义。先看下面的例子。例如:X = 52,Y = 38,求X – Y的值。 [X]补 =
[-Y]原 = [-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里面只要有一个加法器就可以做算术运算了。
阅读(6084) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
请登录后评论。为什么使用补码_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
为什么使用补码
你可能喜欢}

我要回帖

更多关于 反码和补码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信