补码解释及运算
任何一个数都可以表示为-a=2^(n-1)-2^(n-1)-a;
这个假设a为正数,那么-a就是负数。而根据二进制转十进制数的方法,我们可以把a表示为:a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)
这里k0,k1,k2,k(n-2)是1或者0,而且这里设a的二进制位数为n位,即其模为2^(n-1),而2^(n-1)其二项展开是:1+2^0+2^1+2^2+……+2^(n-2),而式子:-a=2^(n-1)-2^(n-1)-a中,2^(n-1)-a代入a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)和2^(n-1)=1+2^0+2^1+2^2+……+2^(n-2)两式,2^(n-1)-a=(1-k(n-2))*2^(n-2)+(1-k(n-3))*2^(n-3)+……+(1-k2)*2^2+(1-k1)*2^1+(1-k0)*2^0+1,而这步转化正是取反再加1的规则的代数原理所在。因为这里k0,k1,k2,k3……不是0就是1,所以1-k0,1-k1,1-k2的运算就是二进制下的取反,而为什么要加1,追溯起来就是2^(n-1)的二项展开式最后还有一项1的缘故。而-a=2^(n-1)-2^(n-1)-a中,还有-2^(n-1)这项未解释,这项就是补码里首位的1,首位1在转化为十进制时要乘上2^(n-1),这正是n位二进制的模。
不能贴公式,所以看起来很麻烦,如果写成代数式子看起来是很方便的。
注:n位二进制,最高位为符号位,因此表示的数值范围-2^(n-1) ——2^(n-1) -1,所以模为2^(n-1)。上面提到的8位二进制模为2^8是因为最高位非符号位,表示的数值范围为0——2^8-1。
C语言中,就是用补码进行存储和运算的。
- 补码(7489)
相关推荐
什么是“可解释的”? 可解释性AI不能解释什么
通过建立既可解释又准确的模型来改良这种错误的二分法。关键是将神经网络与决策树相结合,在使用神经网络进行低级决策时保留高级的可解释性。
2020-05-31 10:51:44
7985

基于FPGA的并行ADC与DAC Verilog实现案例
转换的依据是一个简单的运算关系:“补码的整数值”+“原码绝对值的整数值”=2^B,B为位宽。比如带符号数原码1110的补码为1010:1110取绝对值0110为6;1010为10,二者加起来为2^4=16。
2024-03-21 12:19:08
104


2.7 python运算符
符(a ^ b) 输出结果 49 ,二进制解释: 0011 0001~按位取反运算符(~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。[td]右移动运算
2022-02-21 16:43:26
补码怎么转换为原码?
我的AD7606的输出编码方式为二进制补码,其最高位是符号位,下位机单片机输出16进制(126B)显示在LABVIE W上,我LABVIEW上怎么补码转换为原码
2017-05-22 11:18:37
补码是什么 补码和原码的转化
计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来
2019-12-11 17:45:23
运算符使用相关资料推荐
&,按位与功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。1&1=11&0=00&1=00&
2022-02-25 07:03:34
AD9957的二进制补码的小数点位置如何确定?
您好!我正使用AD9957的QUDC模式,现通过DSP给AD9957送入并行数据。我的问题是,数据手册说施加于引D<17:0>的数据字可以选择二进制补码编码格式,那么请问这18位的二进制补码的小数点位置如何确定?AD9957是如何判断的?谢谢
2023-12-25 07:55:04
ADXL345用于存储三轴数据的寄存器放的数据时补码形式
我最近在用ADXL345,里面用于存储三轴数据的寄存器放的数据时补码形式。那我应该怎么处理。放入有符号的数据类型吗?平时使用的数据类型都是无符号的。突然有点乱。那位大虾可以帮忙解释一下。另外,我应该怎样处理才能在液晶上显示负数呢?如何变化这些数据谢谢啦
2019-03-08 04:07:46
FPGA中的除法运算及初识AXI总线
] signal_b;需要注意一点,FPGA将所有有符号数视为二进制补码形式,运算的结果同样为补码。再来看看除法器IP核配置界面。总共就两页,非常简单。需要重点关注的有三个地方:1 算法实现结构
2018-08-13 09:27:32
LSM303D温度传感器12位二进制补码右对齐
引用数据表:'温度数据存储在TEMP_OUT_L(05h),TEMP_OUT_H(06h)内,作为12位格式的两个补码数据,右对齐。因此,如果传感器值读数为0且温度下降了1/8度,我希望该值为
2019-03-20 10:30:31
评论