数值的表示方法——原码、反码和补码

看书上就直接出来定义,我想知道哪些数要这样表示,为什么这样表示,有何作用... 看书上就直接出来定义,我想知道哪些数要这样表示,为什么这样表示,有何作用 展开
 我来答
匿名用户
2013-09-21
展开全部
原码、反码和补码是几乎所有计算机教材的第一课,很基础也很简单,由于这些内容一直跟二、四、十六进制的转化放在一起,我从来都是跳过这章直接往下看的,直到有一天,我自己被一个超白目的问题难倒了……”将-3右移2(bit)位,结果是多少?”一下子,我发现,在过去的学习中我挑食了,现在补上这一课。原码,是自然数值的机器数表示。具体的表示规则是这样的:最高为作为符号位,剩下的位是数值位。比如-3原码表示为10000011(如图)。原码的数值表示范围跟二进制的位数有关,如8位二进制数最大的表示范围是-127~+127之间(最高位是符号位)。反码,是机器数运算过程的中间表示形式。具体规则是:正数的反码和原码相同;负数的反码是符号位不变,其他位按位求反得到的。如,-3的补码是11111100。补码,是机器数的运算表示形式。引入了补码克服了原码的局限性(由于符号位要单独操作,运算方法比较复杂),使得计算减法可以用计算加法的方式得到;补码另外的优点是,数字0补码表示的唯一性。具体的规则是:正数的补码和原码相同;负数的补码是反码末位加1。如,-3的补码是11111101。然后,运算器对数值进行右移操作,负数补1,正数补0,得到11111111。从符号位看,代表的是负数,还原成原码方法是求补码的补码,得到原码10000001,代表十进制数-1。总结一下:正数的原码,反码和补码相同。负数的反码是原码保持符号位不变,其他位按位求反;补码是反码加1。补码还原是补码的补码。左移操作即所有的高位舍去(包括符号位),右边(低位)补0;右移操作,所有的低位舍去(右移),高位(左边)负数补1,正数补0。
匿名用户
2013-09-21
展开全部
这个我前几天给一个人解释过~我把回答的复制过来~ 计算机不会减法~补码的作用是把减法变成加法~书上一般是总结的规律方便记忆~ 但是你实际从低层原理上看~并不是很准确~比如 补码是没正负号的~以下是我在其他地方的回答~ 计算机不会减法`所以用补码把减法变成加法` 你看的数一般就说 "正数的补码是其本身,负数的补码是原码按位取反后1,符号位就是最高位等等`"但是确没说为什么 正书可以127`负数居然可以存128位其实是不准确`或者说有的地方是不对的从底层看`只是为了方便你记忆总结的规律~我们还是来看8位~ 首先~我得说补码无正负号~这是官方解释~ 8位二进制一共可以表示多少位数字?255个加个0~~ 其次~补码其实是 跟最小数的 "距离"~为什么这么说是最小数的距离`解释很麻烦`不过有个最简单的方法是穷举`(我们先看后7位~第一位我稍后解释为什么不是正负号)-128 是多少 0000000-127 0000001-128 0000002………………-1 11111110 00000001 0000001……………………127 1111111 从这里我们可以看出~7位反码是跟最小数 -128的距离~ 但我们又发现个问题~ -1到0的时候进位了`但是我们只有7位` 进的那一位没有` 这就是为什么要8位的原因~但现在又出现个问题` 为什么 没进位的第一位是1~进位以后第一位是0~也就是说~ -1为什么不是01111111 而是11111111?我们还是举例来说明`- 1+-2为多少~至少显然是个负数~ 而如果-1表示为 01111111`那-1+-2`会为11111101~ 负数加负数居然等于整数!显然不行`所以 -1也11111111表示~ 也就是说` -128不是从00000000开始` 而是从10000000开始(注意开始穷举是7位`这里是八位)~ 所以我们看出~第一位主要是为了进位也有区别正负数的作用~但是其实不是正负号~其实这些举例都可以换成数学方式说明~不过估计说起更复杂~举例说明简单些~ 希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-21
展开全部
32 学汇编了啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式