二进制补码怎么算

二进制补码怎么算 二进制的补码怎么算?

二进制补码怎么算?

二进制的补码怎么算?

1、正数补码表示:正数补码 = 原码负数补码 = {原代码符号不变} {数值位按位反转后 1} or= {原代码符号不变} {第一个数字从右边的第一个1和它右边的0保持不变,左侧安置位置取反} 97和-97为例: 97原码 = 0110_0001b 97补码 = 0110_0001b-97原码 = 1110_0001b-97补码 = 1001_1111b2、纯小数原码:如何获得纯小数原码?有很多方法,这里提供了一种更方便的笔算方法。有很多方法,这里提供了一种更方便的笔算方法。.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为例,查询其原码为110_0001.1010_0011_1101_0111b笔算过程:-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小数点位于第16位,与查询结果一致。则其补码为1001_1110_0101_1100_0010_1001b,在此采用 负数的补码 = {原代码符号不变} {数值位按位反转后 1} 方法5、补码获取原码:方法:符号位不动,幅度值反转 1 or符号位不动,幅度值-1取反-97.64补码 = 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_1011ps.原代码的扩展是将符号位置提到前面,然后在扩展位置的上部0.-5原码 = 4‘b’1101 = 6'b10_0101,求补码得6b11_1011,与上面一致。-5补码 = 4'b1011 = 6'b11_1011ps.原代码的扩展是将符号位置提到前面,然后在扩展位置的上部0.-5原码 = 4‘b’1101 = 6'b10_0101,求补码得6b11_1011,与上面一致。扩展数据:计算机中的符号数有三种表示方式,即原码、反码和补码。三种表示方式都有符号位和数值位两部分,符号位用0表示正,用1表示负,而数值位,三种表示方式各不相同。在计算机系统中,所有的数值都用补码来表示和存储。因为,使用补码,可以统一处理符号位和数值域;同时,加减法也可以统一处理。另外,补码与原码相互转换,操作过程相同,不需要额外的硬件电路。