tinyOS无法处理表示大于4个字节的数吗,我在tinyOS的平台上使用nesC编程过程中,出现数据与C语言(代码几乎相同)处理的数据 ,在某个步骤中突然不同, 这是数据溢出的问题吗?求各路大神解惑啊??谢谢!!!
能处理多大的数,和操作系统应该没有关系。贴出你的代码
for(j =16; j < 64; j++)
{
SS1 = ROTL((ROTL(A,12) + E + ROTL(T[j],j)), 7); //SS1、SS2、TT1、TT2均为unsigned long型
SS2 = SS1 ^ ROTL(A,12);
TT1 = FF1(A,B,C) + D + SS2 + W1[j];
TT2 = GG1(E,F,G) + H + SS1 + W[j];
if(j>31){
DbgOut(DbgOut_LEVEL,"%d ",j);//j=33开始出错
DbgOut(DbgOut_LEVEL,"%lx ",SS1);
DbgOut(DbgOut_LEVEL,"%lx ",SS2);
DbgOut(DbgOut_LEVEL,"%lx ",TT1);
DbgOut(DbgOut_LEVEL,"%lx ",TT2);
}
D = C;
C = ROTL(B,9);
B = A;
A = TT1;
H = G;
G = ROTL(F,19);
F = E;
E = P0(TT2);
}
#define FF0(x,y,z) ( (x) ^ (y) ^ (z))
#define FF1(x,y,z) (((x) & (y)) | ( (x) & (z)) | ( (y) & (z)))
#define GG0(x,y,z) ( (x) ^ (y) ^ (z))
#define GG1(x,y,z) (((x) & (y)) | ( (~(x)) & (z)) )
#define SHL(x,n) (((x) & 0xFFFFFFFF) << n)
#define ROTL(x,n) (SHL((x),n) | ((x) >> (32 - n)))
下面的for循环代码是出错的地方,劳烦解答
像右移、取反等等都要考虑符号位的处理,不知道你用的什么编译器,可以单独拿出来试验下。
http://www.cnblogs.com/suda/archive/2012/03/31/2427114.html
http://wenku.baidu.com/view/ed60223483c4bb4cf7ecd1d3.html?re=view
不是有8字节的数据类型吗