11的原码反码补码计算器,反码,补码是多少

trackbacks-0
(转)原码、反码和补码
关于补码,看过一些书籍和网文,基本都是在&求反加一&的方法、步骤上反复强调,而对于补码的本质和定义,讨论的不足。这就对初学者的造成了误导,使得很多人都纠结在-128的补码求取过程中。关于反码和原码,大家都是在郑重其事的讲解,其实,学过的人都知道,它们的重要性是 0 !做而论道把自己对于补码的认识写在下面,但愿对读者有些帮助。
加法器计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。即:减去某个数字(或者说加上某个负数)的运算,都应该研究如何用加法来完成。
模、补数在日常生活当中,可以看到很多这样的事情:把某物体左转 90 度,和右转 270 度,在不考虑圈数的条件下,最终的效果是相同的;把分针倒拨 20 分钟,和正拨 40 分钟,在不考虑时针的条件下,效果也是相同的;把数字 87,减去 25,和加上 75,在不考虑百位数的条件下,效果也是相同的;&&。上述几组数字,有这样的关系:  90 + 270 = 360  20 + 40 = 60  25 + 75 = 100式中的 360、60 和 100,就是&模&。式中的 90 和 270、20 和 40,以及 25 和 75,就是一对对&互补&的数字。
知道了&模&,求某个数字的&补数&,就是轻而易举的了:如果模为 365,数字 120 的补数为:365 - 120 = 245。
用补数代替原数,可把减法转变为加法。出现的进位就是模,此时的进位,就应该忽略不计。
二进制数的模前面说过的十进制数 25 和 75,它们是 2 位数的运算,模是 100,即 1 的后面加上 2 个 0。如果有 3 位数参加运算,模就是 1000,即 1 的后面加上 3 个 0。这里的 1000,是十进制数的一千,可以写成 10^3,即 10 的 3 次方。推论:有多少位数参加运算,模就是在 1 的后面加上多少个 0。
对于二进制数字,模也是这样推算。如果是 3 位二进制数参加运算,模就是 1000,即 1 的后面加上 3 个 0;那么当 8 位二进制数参加运算,模就是 1 ,即 1 的后面加上 8 个 0。16 位二进制数参加运算,模可就大了,是 1 的后面加上 16 个 0。注意:这里提到的 1、0,都是二进制数。8 位二进制数的模可以按照十进制写成 2^8,即 256。16 位数二进制数的模,就是 2^16,按照十进制,它就是 65536。
二进制数的补码求二进制数的补数,目的是往计算机里面存放。在计算机里面,存放的数字什么的,都称为机器码;那么二进制形式的补数,也就改称为补码了。一般情况下,都是以 8 位二进制数来讨论补码,少数也有用 16 位数的。
计算时加上正数,是不需要进行求取补数的;只有进行减法(或者加上负数),才需要对减数求补数。补码就是按照这个要求来定义的:正数不变,负数即用模减去绝对值。
已知一个数 X,其 8 位字长的补码定义为:
      / X 0 &= X &= +127 ;正数和0的补码,就是该数字本身 [X]补 = |      \ 2^8 -|X| -128 &= X & 0 ;负数的补码,就是用 1 ,减去该数字的绝对值
例如 X = -126,其补码为 ,计算方法如下:
    1    -  -----------     
可以看出,按照补码的定义来求补码,概念十分清晰,方法、步骤也是十分简单的。
应用补码进行计算用补码计算:83-25=58。
    83  ---都变成补码,再用加法运算--&    - 25  -& 1
- -& +  -----          --------    58  &--忽略进位1,结果就是正确的--[1]
计算结果如果超出了-128~+127的范围,结果将是错误的,这是没有办法纠正的。
应用补码进行计算,完全符合前面介绍的&用补数可把减法转换成加法&的做法,只要忽略进位(这个进位1,就是求补的时候,加进去的1 中的1),结果就是正确的。
这些关于补数、补码的定义、方法、步骤,读者如果看懂了前面的文字,相信大家自己都可以总结出来。那么为什么总有些网友要提出关于求取补码的问题呢?在做而论道看来,就是因为很多教材和网文都在这个问题上&画蛇添足&。
关于补码的蛇足补码出现后,后人又补充了不少&蛇足&:符号位、求反加一、原码、反码......。下面的表格给出了一些 8 位数的补码。
--符号位从这个表格中,可以看出特点:正数的最高位都是0,负数的最高位都是1。这样一来,有人就把最高位理解成了符号位。说什么是规定的用0代表正号,......。并且郑重其事的补充说明:&符号位也参加运算&。真能忽悠!卖拐、卖车的都甘拜下风。其实,前面说过的 补数 和 补码的定义式 里面,根本就没有什么符号位。这最高位的1、0是自然出现的,并不是由人来规定的。--求反加一负数补码的后面七位,也可以看出一个不完全的规律:它们和绝对值之间存在着&求反加一&的关系。于是,又有人推出了这个不同于定义式的算法。--原码和反码由于使用&求反加一&来求取补码,顺便又引出了 原码 和 反码 两个垃圾概念。
其实,&求反加一&的计算方法只是适用于计算二进制形式的补数,它并不是通用的。并且把&求反加一&用于求-128的补码,有个溢出的现象,很多人都在这里被弄瘸了很长时间。原码和反码也只不过是&人工&进行&求反加一&时的中间过程,在计算机里面根本是不存在的,它们也就没有丝毫用处。
做而论道的建议求取补码,就按照定义的规定,负数采用&模减去绝对值&的方法来求,这是求补数的通用方法,适合于各种进制、各种大小的数字。不要用求反加一的方法,也就不用理会原码和反码了,也不牵涉符号位的问题。以后的计算,也就没有必要特殊说明:&符号位一起参加运算...&,因为根本就没有什么符号位。
如果把原码和反码、符号位等等垃圾概念,从计算机的书中删减掉,学习补码将会省力不少。
阅读(...) 评论()原码,反码,补码及运算_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
原码,反码,补码及运算
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
你可能喜欢原码、补码和反码 - 网奇
原码、补码和反码
[日期:01-11]
(1)原码表示法 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。例如,X1= +1010110X2= 一1001010其原码记作:[X1]原=[+1010110]原=[X2]原=[-1001010]原=原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:最大值为0.1111111,其真值约为(0.99)10最小值为1.1111111,其真值约为(一0.99)10当用8位二进制来表示整数原码时,其表示范围:最大值为,其真值为(127)10最小值为,其真值为(-127)10在原码表示法中,对0有两种表示形式:[+0]原=[-0] 原= (2)补码表示法 机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。例如,[X1]=+1010110[X2]= 一1001010[X1]原=[X1]补=即 [X1]原=[X1]补=[X2] 原= [X2] 补==补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:最大为0.1111111,其真值为(0.99)10最小为1.0000000,其真值为(一1)10采用8位二进制表示时,整数补码的表示范围:最大为,其真值为(127)10最小为,其真值为(一128)10在补码表示法中,0只有一种表示形式:[+0]补=[+0]补==(由于受设备字长的限制,最后的进位丢失)所以有[+0]补=[+0]补=  (3)反码表示法 机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。例如:X1= +1010110X2= 一1001010[X1]原=[X1]反=[X1]原=[X2]原=[X2]反=反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。例1. 已知[X]原=,求[X]补。分析如下:由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即[X]原=[X]反=十)      1  [X]补= 例2. 已知[X]补=,求[X]原。分析如下:对于机器数为正数,则[X]原=[X]补对于机器数为负数,则有[X]原=[[X]补]补现给定的为负数,故有:[X]补=[[X]补]反=十) 1  [[X]补]补==[X]原
相关新闻 & & &
快速了解网奇
网奇产品导航
网奇 网站管理系统
网奇客户案例
标题内容作者-128到127的原码反码补码
本文根据百度百科描述
原码:最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
符号位 数值位
&&&&&[+7]原=
0 0000111 B
   [-7]原= 1 0000111 B
&&&&&-0&&&&&&&&&&&&&&-127&&&&&&&&&&&&&-1&&&&&&&&&&&&
&0&&&&&&&&&&&&&&&&&1&&&&&&&&&&&&&&&&&127
0000000&&&&&&&&1
1111111&&&&&&&1
0000001&&&&&&
0000000&&&&&&&
0000001&&&&&&&&&
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
&&&&&符号位
&&&&&[+7]反=
0 0000111 B
   [-7]反= 1 1111000 B
-0&&&&&&&&&&&&-127&&&&&&&&&&&
-&1&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&
&1&&&&&&&&&&&&&&&&127
1111111&&&&&
0000000&&&&&
1111110&&&&&&&&
0000000&&&&&&&&&&&&0
0000001&&&&&&&&&0
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
&&& 符号位
  [+7]补= 0 0000111 B
  [-7]补= 1 1111001 B
&&-128&&&&&&&&&&&&&&-127&&&&&&&
-1&&&&&&&&&&
&0&&&&&&&&&&&
1&&&&&&&&&&
0000000&&&&&&&&
0000001&&&&&&
111111&&&&
0000000&&&&&&&
0000001&&&&
用1 0000000 表示-128,因为只有这个表示没有被使用;对于多字节也可以这样推出来。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 原码反码补码转换器 的文章

 

随机推荐