当前位置:首页 > 前端设计 > 正文

二进制的补码运算,二进制补码转换十进制

二进制的补码运算,二进制补码转换十进制

其实二进制的补码运算的问题并不复杂,但是又很多的朋友都不太了解二进制补码转换十进制,因此呢,今天小编就来为大家分享二进制的补码运算的一些知识,希望可以帮助到大家,下面我...

其实二进制的补码运算的问题并不复杂,但是又很多的朋友都不太了解二进制补码转换十进制,因此呢,今天小编就来为大家分享二进制的补码运算的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

二进制数原码反码补码计算

原码就是把原来的数化成2进制比如10的原码就是00001010,+10的原码是00001010,最高位的0代表这个数是正数(最高位就是符号位).-10的原码就是10001010,最高位的1代表这个数是负数+10的原码是00001010,那他的反码,补码都和原码相同也是00001010,原因是正数的原反补码相同-10的原码是10001010,那他的反码是11110101,也就是符号位不变,其他位0变1,1变0.他的补码是在反码的基础上,最低位加1,也就是11110110.明白了吧?

用二进制补码运算计算-16-14

-16的补码为11110000-14的补码为11110010两者相加:1111000011110010+---------------11100010(注:超出8位的舍弃)----此即-30的补码

二进制小数的补码怎么求例如0.0001

十进制小数的原码和补码应该先将其转换成二进制小数,采用"乘2取整,顺序排列"法,直到积中的小数部分为零,或者达到所要求的精度为止,然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。比如0.5625的二进制表示就是0.1001b;如果机器码字长8位的话,0.5的二进制表示就是0.1000000b,

二进制原码怎么转换成补码

1、首先要知道,换算规则:原码转换为反码:符号位不变,数值位分别“按位取反”。

2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变,数值位分别“按位取反”。

3、然后就是,原码转换为补码的规则:符号位不变,数值位按位取反,末位再加1。

4、最后补码转换为原码:符号位不变,数值位按位取反,末位再加1,即补码的补码等于原码。

5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反,末位再加1。

二进制变形补码计算

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,在此采用负数的补码={原码符号位不变}+{数值位按位取反后+

二进制补码怎么计算的

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

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

【例2】求-7的补码。

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

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

所以-7的补码是11111001。

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

最新文章