‘壹’ 计算机原码反码补码怎么算的
在计算机系统中,数值,一律用补码来表示和存储。
补码,其实,就是一个“代替负数进行运算”的正数。
使用了补码(正数)之后,在计算机中,就没有负数了。
随之而来的,就是:减法运算也都不存在了。
所以,借助于补码,计算机只需要配置一个加法器,就能走遍天下。
使用补码的目的,就是:简化计算机的硬件。
而原码、反码,都没有这种功能,所以,计算机中,根本就不用它们。
所以,原码和反码或纤,只能在纸上写一写,在计算机中,都是不存在的。
---------------------
补码(一个正数),怎么就能代替负数呢?
你看时针:倒拨 3 小时,可以用正拨 9 小时代替吧?
你看三角函数:-π/2、+3π/2,两者的函数值也是相同的。
10 进制数,如果限定只用 2 位 ,那么就会有:
25 - 1 = 24
25 + 99 = (一百) 24
如果忽略进位一百(10^2),+99 就可以代替-1。
上面所说的这些正数,就是“负数的补数”。
求粗凯补数的公式是: 补数(即正数)= 负数 + 周期。
正数,必须直接就参加运算,不可再做任何变换。
就是说:正数,本身就已经是正数了,它并不存在什么补数。
---------------------
计算机用二进制,补数,那就称为“补码”了。
8 位 2 进制的周期,是:2^8 = 256。
8 位 2 进制,总共可以组成 256 个代码。
用其中的一半(即 128 个)代表负数:-1 ~ -128。
那么:
-1 的补码,就是:-1 + 256 = 255 = 1111 1111(二进制)。
-2 的补码是:-2 + 256 = 254 = 1111 1110。
。。。
-128 的补码,就是:128 = 1000 0000。
---------------------
至此,你就可以推出“补码的定义式”:
当 X >= 0, [ X ]补 = X; 零和正数不用变换。
当 X < 0, [ X ]补 = X + 2^n。n 是补码的位数。
这是通用的公式。
在严谨一点的书上,也有这种公式,你去翻翻书吧。
---------------岩团唤------
按照公式求补码,是极为简便的,而且还能理解补码的意义。
由补码,求其代表的数值,也是很方便的。
那么,就不要学“原码反码取反加一符号位不变”了。
况且,原码和反码比补码,还少了一个数,取反加一,也无法使用。
只有那些数学不好的老外,才弄这些“隔路”的花样。
实际上,只要会“补码与数值”的互换,就够用了。
---------------------
算式 5 - 7 =-2,计算机用八位补码计算如下:
5= 0000 0101
[-7]补码 = 1111 1001
--相加-----------
得:(1) 1111 1110 = [-2]补码
舍弃了进位,结果,就是正确的。
‘贰’ 计算机的原码,反码,补码是怎么回事可以举例说明吗
计算机的原码,反码,补码是怎么回事?
可以举例说明吗?
计算机中,并没有原码和反码。
补码是怎么回事?
这得从“补数”谈起。
计算机所计算的位数,是固定的,如八位机。。。
位数限定之后,就可以用“补数”代替负数,用加法实现减法运算。
如两位十进制,-1,就可以用 +99 代替。
25 - 1 = 24
25 + 99 = (一百) 24
舍弃进位,只取两位,这两种算法功能就是相同的。
99,就是-1 的补数。计算公式:补数 = 一百+负数。
一百,是两位十进制数的计数周期。
-------------------------
计算机用二进制,补数,就改称为:补码。
八位二进制:0000 0000 ~ 1111 1111 (十进制 255)。
计数周期是:2^8 = 256。
所以,-1 补码就是 256 + (-1) = 255 = 1111 1111(二进制)。
用不存在的“原码反码取反加一”来求,也是这个结果。
求负数补码的计算公式: 周期 + 该负数。
正数,不用转换。也可以说,正数自身就是补码。
-------------------------
可以举例说明吗?
例如: 7-3 = 4。
用补码的计算过程如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得(1) 0000 0100 = 4 的补码
舍弃进位,只保留八位作为结果,这就实现了 7-3。
‘叁’ 假定某台计算机的字长为8位,则十进制数255的补码为
如果是8位无符号数,则十进制数255的补码为11111111。
如果是有符号数,则该数已镇盯经溢出,存储的效果仍是11111111,但取出时系返洞统将解读为-1。
字长8位的有符号范围是-128~127,所以255越界了,没有能够表达255的补码。对于无符号数255是8位字长能表达的最大数,无符号数的补码都是自身,所以还是漏旅枯255;从这个意义上讲,答11111111不该算错。
补码表示统一了符号位和数值位,使得符号位可以和数值位一起直接参与运算,这也为后面设计乘法器除法器等运算器件提供了极大的方便。
总之,补码概念的引入和当时运算器设计的背景不无关系,从设计者角度,既要考虑表示的数的类型(小数、整数、实数和复数)、数值范围和精确度,又要考虑数据存储和处理所需要的硬件代价。因此,使用补码来表示机器数并得到广泛的应用,也就不难理解了。
‘肆’ 十进制数(+255)的原码是多少十进制数(-255)的反码是多少
十进制-67的原码是01000011、反码是10111100和补码是10111101。
转换规则:
1、负数的源码为二进制前面加符号位;
-67=1000011(二进制)=11000011(原码)
2、负数的反码=原码各位取反(除了最高位外);
11000011(原码)=10111100(反码)
3、负数的补码=负数的反码+00000001;
10111100(反码)=10111101(补码)
‘伍’ 什么是补码,其补码如何计算
就比如-9补码是11110111。
9的源码为00001001,如果是负数的话,补码为最高位置1,其余取反也就是11110110,然后在最低位加1即可即11110111。
计算机中的负数是以其补码形式存在的补码=原码取反+1。
一个字节有8位可以表示的数值范围在-128到+127。用二进制表示也就是10000000-01111111(注意:最高位表示符号)。最高位是1的都是负数最高位是0的都是正数。
(5)255的源码和补码扩展阅读:
补码乘法
补码的乘法不具备【X*Y】补=【X】补×【Y】补的性质。但是【X*Y】补==【X】补×Y,所得结果再取补码,如薯衫x=101,y=011,[x*y]补禅手卜=-[(-101)*011]=-[011*011]=-01001=10111。
其中,若【Y】补=y31y30……y0,则Y=-y31*2^31+y30*2^30+……+y0*2^0
原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为贺穗0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
‘陆’ c语言-255补码
8位补码表胡闭颂示 00000000零 00000001~01111111正态衡数1~127 10000000~11111111负数-128~-1 所以可以看到8位二进制数表示的范围裤郑是-128~127
‘柒’ 我把255除2取余得到了0 1111 1111的二进制数字,这个2进制数是计算机的源码,还是算补码
如果你用255转换锋埋成二进行基漏制数,那可以称为原码
对于计算机来说,你可以用原码档烂来计算也可以把它当成补码来使用
11111111减1=11111110
11111110取反=00000001
等于1,如果拿11111111当成补码,那么它就是-1的补码形式