变量i是int型的,其数据范围-32768~32767,如将unsigned int型数65530赋给i后,i成为-6。请问i为什么不是6??
65530为无符号字符型,其内存中二进制为:1111 1111 1111 1010
int型占内存为二进制的16个位,其中第一位为正负号,0为正,1为负,当为负时,后15位为补码000 0000 0000 0110 = 6,加个前面的负号,结果即为-6。
注:负数的补码是这么理解的:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
反之:int 型-6,赋值给unsigned int型,变为65530.
例子函数:写入flash,函数1要求写入flash的是unsigned int u32data型, 实际上写入的是个int,这时要先把Int赋值给unsigned int型,然后调用下面函数1写入flash,
读取flash的时候:int型 =ReadWord(unsigned int addr);
上面转化用到了:写入flash:int 型转化为unsigned int 型,
读取flash:unsigned int 型转化为Int型,整个过程中数据并没有变化。
函数1无返回值:int DrvFlash_Burn_Word (unsigned int u32addr,
unsigned int u32DelayTime,
unsigned int u32data);
函数2返回Int型:int ReadWord(unsigned int addr);
|