a(long)*b(long)=c(long long)为什么不对啊?
我用两个long型数a*b相乘,为什么结果c(long long型)不对啊?不是说long long型数可以表示64位的吗?这是怎么回事啊?如果必须用c语言做32位*32位怎么办啊?谢谢!
先看看编译器是否支持long long数据类型,请查看相应的DSP文档。
可以定义long long型数据啊,但是定义出来的数据超过2^32就错误了!
定义是可以定义,关键是查看文档long long代表多少个bit, 可以看看你所用的芯片的DSP Programmer\'s Guide
例如c55x系列的long long是40bit, 而c6000的是64bit.
用sizeof也可以得知。
我用的是2808,听说28系列的 long long型是64位的!
:
问题:我定义了long long K4,K5,K6,K7;但是,当我运算K5=K4+2时,结果是(K5=1;寄存器ACC=1,P=1;XT=0),出错误!
#include \"DSP280x_Device.h\" // DSP280x Headerfile Include File
#include \"DSP280x_Examples.h\" // DSP280x Examples Include File
void error();
long K1,K2,K3;
long long K4,K5,K6,K7;
void main(void)
{
InitSysCtrl();
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
K1=2147483647;//31 (2^31-1)
K2=2147483647;//31 (2^31-1)
K3=2147483647;//31( 2^31-1)
K4=4294967295;//32 (2^32-1)
K5=K4+2;//33 ????出错误!
K6=K5+1;//????出错误!
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;
;
}
void error(void)
{
asm(\" ESTOP0\"
; //Test failed!! Stop!
for (;
;
}
我用的是2801的,CCS3.1环境
我也是这样的问题啊,我的编译通不过LONG LONG 型的数据,
请问一下我该如何做才能定义一个变量为64位的.编译器不支持那该如何做能使编译器支持呢?
谢谢