TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F6638 flash主储存区保存负数的问题

flash中保存带符号的整型数,将 -32768写入flash中,在flash对用位置查到保存的十六进制数为8000,但用将十六进制数8000准换成十进制数是32768,这是为何?如果要在flash中保存负数,该如何写入?负数应该占几个字节

灰小子:

msp430中的int类型是两个字节,有符号数存放-32768~32767。32768第一位是符号位,就是-32768了

灰小子:

回复 灰小子:

落笔:

回复 灰小子:

还有个问题,如果将-32768写入flash中,它在flash中的十六进制数应该是什么呢?

灰小子:

回复 落笔:

记得msp430默认是小端模式,就是低字节在前,高字节在后。不过这个大小端是可以通过开发环境配置的。

落笔:

回复 灰小子:

的确是低字节在前 高字节在后,下面这张图是用计算机算的-50对应的十六进制数

当我将-50写入flash中,查看flash区,flash区保存的为CEFF,将FFCE转换成十进制数不是-50;问题是不是flah区无法保存负数呢?或者保存负数时数值会出错?如果能保存该如何更好的保存呢

灰小子:

回复 落笔:

可以保存负数的。不管负数还是正数,都只是二进制数的组合而已。你怎么写进去的就怎么读出来就好啊。 你如果弄不明白的话,在写入前就强制转为无符号数,读出来之后,再从无符号数强制转为有符号数。

如果你是按字写入,就按字读出。如果是按字符写入就按字符读出,读出的时候按写入的规则转成int型。

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F6638 flash主储存区保存负数的问题
分享到: 更多 (0)