二进制数的补码是什么意思 二进制的补码有什么用

二进制数的补码是什么意思?

二进制补码简介:

计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制1.数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的补码了。

延伸阅读

+15的八位二进制补码?

算法为:

1.+15的原码00000000 00000000 00000000 00001111;

2.得反码11111111 11111111 11111111 11110000;

3.得补码11111111 11111111 11111111 11110001。

所以+15的八位二进制补码是 11110001。

计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

二进制用补码做加减法怎么实现,举个例子?

正数的补码是原码;负数的补码是符号位(最高位)不变,其余位按位取反加1.用补码做减法运算时,结果出现的情况有正、0、负:结果为正或者0时,补码是原码,直接转换成10进制即可;结果为负时,需要将结果减1再保持符号位不变按位取反。例如:1的原码是00000001,补码也是00000001-2的原码是10000010,补码是111111101-2=1+(-2)=00000001+11111110=11111111此时11111111是1-2结果的补码,转换成原码是10000001,对应的十进制是-1.

机器字长为n的二进制数可以用补码表示多少?

正数的补码与其原码相同,负数的补码为其反码在最低位加1。(1)X=+1011011(2)Y=-1011011(1)根据定义有:[X]原码=01011011[X]补码=01011011(2)根据定义有:[Y]原码=11011011[Y]反码=10100100[Y]补码=10100101补码表示的整数范围是-2n-1~+(2n-1-1),其中n为机器字长。则:8位二进制补码表示的整数范围是-128~+12716位二进制补码表示的整数范围是-32768~+32767当运算结果超出这个范围时,就不能正确表示数了,此时称为溢出

二进制变形补码计算?

1、正数的补码表示:

正数的补码 = 原码

负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or

= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}

以十进制整数+97和-97为例:

+97原码 = 0110_0001b

+97补码 = 0110_0001b

-97原码 = 1110_0001b

-97补码 = 1001_1111b

2、纯小数的原码:

纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。

以0.64为例,通过查阅可知其原码为0.1010_0011_1101_0111b。

操作方法:

将0.64 * 2^n 得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。

此处将n取16,得

X = 41943d = 1010_0011_1101_0111b

即0.64的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.64d = 0.1010_0011_1101_0111b 与查询结果一致。

再实验n取12,得

X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。

3、纯小数的补码:

纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。

以-0.64为例,其原码为1.1010_0011_1101_0111b

则补码为:1.0101_1100_0010_1001b

当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。

4、一般带小数的补码

一般来说这种情况下先转为整数运算比较方便

-97.64为例,经查询其原码为1110_0001.1010_0011_1101_0111b

笔算过程:

-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。

则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原码符号位不变} + {数值位按位取反后+

二进制补码运算结果是二进制吗?

二进制补码运算结果是二进制。

如4的二进制0100,7的二进制为0111,-7的补码为1001,3的二进制0011,-3的补码为1101,4-7=0100 1001=1101,原理则是计算机中的负数的表示方式是最好位是符号位,减法运算其实就是加法的运算,即4 16-7的二进制运算

二进制补码运算怎么确定有效位数?

两个二进制数补码相加时,数值位有效数字的位数

就是该数的真值的有效数字的位数,也就是该数绝对值有效数字的位数。

二进制补码的表示范围有一个规律,就是n位二进制补码的表示范围为-2^(n-1)~+2^(n-1)-1。

补码:补码是基于反码的变动,有两种情况,如果是正数的补码,就跟原码反码都相同。如果是负数的补码,则在其反码的基础上,再加1。

二进制数补码的范围公式?

二进制补码运算公式:

-x = ~x + 1 = ~(x-1)

~x = -x-1

-(~x) = x+1

~(-x) = x-1

x+y = x – ~y – 1 = (x |y)+(x&y)

x-y = x + ~y + 1 = (x |~y)-(~x|y)

x^y = (x |y)-(x&y)

x |y = (x&~y)+y

x&y = (~x |y)-~x

x==y: ~(x-y |y-x)

x!=y: x-y |y-x

x < y: (x-y)^((x^y)&((x-y)^x))

x <=y: (x |~y)&((x^y) |~(y-x))

x < y: (~x&y) |((~x |y)&(x-y))//无符号x,y比较

x <=y: (~x |y)&((x^y) |~(y-x))//无符号x,y比较。

二进制补码怎么计算的?

-85负就是1,然后计算正85:+85的原码(1010101)→按位取反(0101010)→加1(0101011)

10101011(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

  【例2】求-7的补码。

  因为给定数是负数,则符号位为“1”。

  后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)

  所以-7的补码是11111001。

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

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

版权声明