1.二进制数0111的位的位补码是多少?
二进制数0111的补码是多少?
正数的补码表示
正数的补码 = 原码
负数的补码 = { 原码符号位不变} + { 数值位按位取反后+1} or
= { 原码符号位不变} + { 数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+和-为例:
+原码 = _b
+补码 = _b
-原码 = _b
-补码 = _b
2.纯小数的原码
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的源码原码方法。
以0.为例,位的位通过查阅可知其原码为0.___b。源码原码
操作方法:
将0. * 2^n 得到X,位的位免费人脸识别源码其中n为预保留的源码原码德育云源码小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的位的位整数部分。
此处将n取,源码原码得
X = d = ___b
即0.的位的位二进制表示在左移了位后为___b,因此可以认为0.d = 0.___b 与查询结果一致。源码原码
再实验n取,位的位得
X = d = __b 即 0.d = 0.__b,源码原码在忽略位小数之后的位的位源码伪代码位数情况下,计算结果相同。源码原码
3.纯小数的位的位补码
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,分销源码开源找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.为例,其原码为1.___b
则补码为:1.___b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4.一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-.为例,经查询其原码为_.___b
笔算过程:
-. * 2^ = - = _____b,数据治理源码其中小数点在右数第位,与查询结果一致。
则其补码为_____b,在此采用 负数的补码 = { 原码符号位不变} + { 数值位按位取反后+1} 方法
5.补码得到原码
方法:符号位不动,幅度值取反+1 or符号位不动,幅度值-1取反
-.补码 = _(.)___b
取反 = _(.)___b
+1 = _(.)___b 与查询结果一致
6.补码的拓展
在运算时必要时要对二进制补码进行数位拓展,此时应将符号位向前拓展。
-5补码 = 4'b = 6'b_
ps.原码的拓展是将符号位提到最前面,然后在拓展位上部0.
-5原码 = 4‘b’ = 6'b_,对其求补码得6'b_,与上文一致。