多个体系结构中的负数表示

时间:2010-04-24 16:21:19

标签: microcontroller

我正在使用OKI 431微控制器。它可以与安装了适当软件的PC通信。 EEPROM连接在微型I2C总线上,用作永久存储器。 PC软件可以读取和写入该EEPROM。

考虑两个数字,B和C,每个都是两个字节的整数。 B对于PC软件和微软都是已知的并且是常数。 C将是一个如此接近B的数字,因此B-C将适合带符号的8位整数。经过一些测试后,C的适当值将由PC确定,并存储在微型EEPROM中供以后使用。

现在micro可以通过两种方式存储C:

  • 微观可以存储代表C
  • 的整个two byte
  • micro可以将B-C存储为one byte有符号整数,以后可以从B和B-C中导出C

我认为负数的两个补码表示现在被硬件制造商普遍接受。仍然我个人不喜欢将负数存储在存储介质中,这些存储介质将由两种不同的架构访问,因为负数可以用不同的方式表示。对于您的信息,431也使用了两个补码

我是否应该摆脱头痛,负数可以用不同的方式表示,并接受我的其他团队成员建议的one byte解决方案?或者我应该坚持two byte解决方案的决定,因为我不需要处理负数?你更喜欢哪一个?为什么?

2 个答案:

答案 0 :(得分:2)

我过去常用的古代FORTRAN应用程序,用于将某些字段的值存储为具有隐含负偏移量的正整数。有12位可用于存储数字,因此我们会在存储之前将值加1024,并在检索之后将其减去。这将允许我们使用(外部)存储器中的正数存储-1024到1023范围内的数字,范围为0到2047.

很优雅,但很简单。你基本上是在代码中进行符号位处理。

答案 1 :(得分:2)

这对您的申请非常具体,除非我遗漏某些东西,否则似乎没有任何外部影响。 我的建议是简单地选择一个并继续使用它 既然你的队友建议采用一种方式并且确实没有区别,那么与团队合作并不是一个糟糕的解决方案。