发布网友 发布时间:2022-03-31 08:03
共4个回答
懂视网 时间:2022-03-31 12:24
8位二进制数表示的符号数中,最高位(首位)表示数字的正负,0为正,1为负。其余7位表示数字的值。对于+0110101,先求原码。因为是正数,最高位为0。原码为0011 0101。正数的原码、反码和补码相同,所以补码=原码= 0011 0101。
二进制(英文:Binary system)是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。数字电子电路中,逻辑门直接采用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制,每个数字称为一个比特(二进制位)或比特。
逢二进一,二进制广泛用于最基础的运算方式,计算机的运行计算基础就是基于二进制来运行。只是用二进制执行运算,用其他进制表现出来。
热心网友 时间:2022-03-31 09:32
正数的补码表示
正数的补码 = 原码
负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or
= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
+97原码 = 0110_0001b
+97补码 = 0110_0001b
-97原码 = 1110_0001b
-97补码 = 1001_1111b
2.纯小数的原码
纯小数的原码如何得到呢?方法有很多,在这里提供一种较为便于笔算的方法。
以0.为例,通过查阅可知其原码为0.1010_0011_1101_0111b。
操作方法:
将0. * 2^n 得到X,其中n为预保留的小数点后位数(即认为n为小数之后的小数不重要),X为乘法结果的整数部分。
此处将n取16,得
X = 41943d = 1010_0011_1101_0111b
即0.的二进制表示在左移了16位后为1010_0011_1101_0111b,因此可以认为0.d = 0.1010_0011_1101_0111b 与查询结果一致。
再实验n取12,得
X = 2621d = 1010_0011_1101b 即 0.d = 0.1010_0011_1101b,在忽略12位小数之后的位数情况下,计算结果相同。
3.纯小数的补码
纯小数的补码遵循的规则是:在得到小数的源码后,小数点前1位表示符号,从最低(右)位起,找到第一个“1”照写,之后“见1写0,见0写1”。
以-0.为例,其原码为1.1010_0011_1101_0111b
则补码为:1.0101_1100_0010_1001b
当然在硬件语言如verilog中二进制表示时不可能带有小数点(事实上不知道哪里可以带小数点)。
4.一般带小数的补码
一般来说这种情况下先转为整数运算比较方便
-97.为例,经查询其原码为1110_0001.1010_0011_1101_0111b
笔算过程:
-97. * 2^16 = -63935 = 1110_0001_1010_0011_1101_0111b,其中小数点在右数第16位,与查询结果一致。
则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原码符号位不变} + {数值位按位取反后+1} 方法
5.补码得到原码
方法:符号位不动,幅度值取反+1 or符号位不动,幅度值-1取反
-97.补码 = 1001_1110(.)0101_1100_0010_1001b
取反 = 1110_0001(.)1010_0011_1101_0110b
+1 = 1110_0001(.)1010_0011_1101_0111b 与查询结果一致
6.补码的拓展
在运算时必要时要对二进制补码进行数位拓展,此时应将符号位向前拓展。
-5补码 = 4'b1011 = 6'b11_1011
ps.原码的拓展是将符号位提到最前面,然后在拓展位上部0.
-5原码 = 4‘b’1101 = 6'b10_0101,对其求补码得6'b11_1011,与上文一致。
热心网友 时间:2022-03-31 10:50
二进制011一的补码。应该是0124。这是基础的计算机电脑知识。
热心网友 时间:2022-03-31 12:25
二进制数 0111... ...
这是正数,补码=数值=0111。