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型。