1.补码二进制00011111-01111111怎么算?
补码二进制00011111-01111111怎么算?
1、源码正数的源码补码表示:
正数的补码 = 原码
负数的补码 = { 原码符号位不变} + { 数值位按位取反后+1} or
= { 原码符号位不变} + { 数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+和-为例:
+原码 = _b
+补码 = _b
-原码 = _b
-补码 = _b
2、纯小数的源码原码:
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的源码方法。
以0.为例,源码cjs源码通过查阅可知其原码为0.___b。源码易gdi模块源码
操作方法:
将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、dnf台服源码分析纯小数的补码:
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.为例,视频解析源码github其原码为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_,与上文一致。