计算机原码反码补码怎样计算

计算机原码反码补码怎样计算,第1张

计算机原码反码补码计算方法:

1、原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符号位 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]

即[-127 , 127]

原码是人脑最容易理解和计算的表示方式。

2、反码

反码的表示方法是:正数的反码是其本身。负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

可见如果一个反码表示的是负数,人脑无法直观地看出来它的数值。通常要将其转换成原码再计算。

3、补码

补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)。

[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补

对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。

扩展资料:

原码,反码和补码是完全不同的。既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢

首先,因为人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。但是对于计算机,加减乘数已经是最基础的运算,要设计的尽量简单。计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂。于是人们想出了将符号位也参与运算的方法。我们知道,根据运算法则减去一个正数等于加上一个负数,即: 1-1 = 1 + (-1) = 0 , 所以机器可以只有加法而没有减法,这样计算机运算的设计就更简单了。

于是人们开始探索将符号位参与运算,并且只保留加法的方法。

-1的补码为11111111

详细过程

1、通常把一个数的最高为定义为符号位,用“0”表示正,用“1”表示负。

因为-1为负,所以-1的原码=10000001

2、反码:对于负数,数符位为1,数符位不变,将数值位诸位取反为反码。

-1的反码=11111110

3、补码:对于负数,数符位为1,数符位不变,将反码+1=补码。

-1的补码=11111111

用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的。

扩展资料:

有符号数是针对二进制来讲的。用最高位作为符号位,“0”代表“+”,“1”代表“-” ;其余数位用作数值位,代表数值。

有符号数的表示:计算机中的数据用二进制表示,数的符号也只能用0/1表示。一般用最高有效位(MSB)来表示数的符号,正数用0表示,负数用1表示。

参考资料来源:百度百科-有符号数

8位二进制补码的计算:先按位取反,也就是把1变成0,把0变成1,得到反码;把得到反码末位再加1即得到补码。

例如:10110011,先按位取反得到01001100,再把01001100加上1,得到01001101,这就是补码。

数在计算机中是以二进制形式表示的。

数分为有符号数和无符号数。

原码、反码、补码都是有符号定点数的表示方法。

一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,原码就是这个数本身的二进制形式。

补码求原码

已知一个数的补码,求原码的 *** 作其实就是对该补码再求补码:

⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。

⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

例:已知一个补码为11111001,则原码是00000111。

因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。

其余七位1111001取反后为0000110;再加1,所以是00000111。

百度百科-补码

二进制的补码怎么算?, 二进制的补码问题

-85负就是1,然后计算正85:+85的原码(1010101)→按位取反(0101010)→加1(0101011)
10101011(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例2求-7的补码。
因为给定数是负数,则符号位为“1”。
后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)
所以-7的补码是11111001。

-108的16个二进制的补码

你问的是-108的16位二进制的补码吧 !

正的108的原码为 0000 0000 0110 1100
负的108的原码为1000 0000 0110 1100
反码 为 1111 1111 1001 0011
补码 为 1111 1111 1001 0100,即FF94 h

负78的八位二进制的补码

x = -78d = -100 1110b
[x]原 =1100 1110b
[x]反 =1011 0001b
[x]补 =1011 0010b

求助!用4位二进制的补码算5-6怎么算啊?

类似于十进制 不够的从前一位借1
不过 0借1了以后前一位只剩1了 就像十进制 借一之后只剩9一样 然后做减法
0101
- 0110
= 1111 (-1的补码)

负数的二进制是怎么算的?其绝对值二进制的补码?

绝对值求反加一
-100原码:1000 0000 0110 0100
-100反码:1111 1111 1001 1011
-100补码:1111 1111 1001 1100=1111 1111 1001 1011(反码) +1

-10100二进制的补码是什么啊

若字长8位,则:
[-10100]原 =1001 0100
[-10100]反 =1110 1011
[-10100]补 =1110 1100

二进制的余码,反码,补码怎么算

举例说明如下:
真值X = -11111 , 若字长8位,则:
[X]原 =10011111 , 最高位是符号位,1表示负数
[X]反 =11100000 , 将原码除符号位之外的数值位取反得反码
[X]补 =11100001 ,将反码末位加1得补码
若真值是正数,无须上述 *** 作,正数的原码反码补码符号位为0,数值与真值相同
例如,真值 y = +100011 , 8位字长,[y]原 =[Y]反 =[Y]补 =00010011
最高位(符号位)为0表示正数,其右侧二个0用于补齐8位字长

数字10怎么转化为二进制的补码

真值+10d =+1010b
( d是十进制数后缀 , b是二进制数后缀 )
若用8位字长的机器数表示
[+10d]原 =[+10d]反 =[+10d]补 =00001010b
最高位是符号位,0表示正数,符号位右侧的3个0用于补齐8位
正数的原码、反码、补码,是相同的

二进制101011的补码和二进制-1110111补码之和

x =101011b, y= -1110111b
约定8位字长
[y]原 =1111 0111b
[y]反 =1000 1000b

[y]补 =1000 1001b
[x]补 =0010 1011b (+
--------------------------
[x+y]补=1011 0100b
Cs⊕Cp = 0⊕0 = 0 ,无溢出
(Cs是符号位的进位,Cp是最高数值位的进位,⊕表示异或)
[x+y]反=1011 0011b
[x+y]原=1100 1100b
结果x+y= -100 1110b = -78d

补码,在计算机中,有所应用。

但是,补码的来源,是由算法导出的,和计算机无关。

 

比如,一个小孩,很小的。

他只认识 100 个数,也不会做减法。

那么,减一,就可以告诉他,用加 99 代替:

36 - 1 =  35

36 + 99 = (1) 35

忽略进位,结果不是一样的吗?

99,就是-1 的补数。

算法: 补数=模+负数。

其中的“模”,是计数系统中,数字个数的总数。

 

补码,也就是二进制的补数。

八位二进制,共有 256 个数字,模,就是 256。

255(1111 1111),就是-1 的补码;

254(1111 1110),就是-2 的补码;

128(1000 0000),就是-128 的补码。

算法:

补码=256 +负数。

正数,直接参加运算即可,用不着转换。

补码相加后的结果:1010 1100 是答案的补码,要转化成原码,才是最终答案

补码转原码方法同原码转补码,即符号位不变,其余按位取反后+1

1010 1100

求反:1101 0011

求补:1101 0100

即:-84

这里用到了补码的运算规则:[X+Y]补=[X]补+[Y]补

求出[X]补+[Y]补后还要求一次补,才能得到答案X+Y

扩展资料:

补码运算原理: 在计算机里,如果我们要计算5-3的值,我们既可以用5减去3,也可以用5加上13。

这就像我们的钟表,它从1点走到12点之后,又回到了1点。我们的计算机也是,从0走到15之后,再往下走就又回到了0,就像我们转了一个圈一样。我们从5这个位置往回退3个格,就完成了5-3这个计算。

我们也可以从5这个位置往前走,一直走到15,这时我们走了10个格,然后我们继续往前走,走到0,然后到1,然后就走到了2。这样,我们往前走了13个格之后,也到了2这个位置。

所以说,在我们这个计算机中,减3和加13是一样的。而3+13=16,我们说在模16的系统下,3和13是互补的。

这样,我们计算5-3就可以换成5+13。3的二进制表示为0011,5的二进制表示为0101。这样,0101-0011就可以表示为0101+(-0011)。

我们在计算机中都是把负数用其补码表示,-0011的补码就是10000-0011(即16-3,也就是13)。10000-0011=1+1111-0011=1+(1111-0011)=1+1100=1101。

我们总说补码是“按位取反再加一”,看了上面这个式子相信大家就会明白了,其实就是把10000-0011换成了1111-0011再加1的形式。

然后,0101-0011就换成了0101+1101,它们计算出来的结果为10010。由于我们的计算机只有四个bit,所以结果为0010。即,在模16的计算机中,5-3=5+13=2。

参考资料:

补码_百度百科 


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12965493.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-29
下一篇2025-08-29

发表评论

登录后才能评论

评论列表(0条)

    保存