二进制补码问题

[复制链接]
 楼主| biao0422 发表于 2010-6-13 16:01 | 显示全部楼层 |阅读模式
我现在用的cs5463芯片,里面的寄存器是以二进制补码的形式存储的,24位的寄存器,但范围是0~1、还有范围是-1~1的,那位高手知道是怎么换算的?谢啦!
aresc 发表于 2010-6-13 17:06 | 显示全部楼层
本帖最后由 aresc 于 2010-6-13 18:52 编辑

如果是正数A,直接用这个数除以0x800000UL就得到相应的小数值。
如果是负数A,先对A按位取反,然后加1,用这个和值除以0x800000UL,然后加一个负号。
black.lu 发表于 2010-6-13 20:36 | 显示全部楼层
补码的概念:
正数:补码=原码
负数:补码=原码(除符号位)按位取反+1

还有一种算法是如果负数补码是A,24位带符号位,原码=-(2^24-A)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部