A. c51單片機中,每條c語言需要的時間是多少
應該是指令周期,根據指令的不同,一般一個指令需要1-4個機器周期來完成(比如乘法或除法就需要48個時鍾周期來完成),一般的51單片機都是12分頻,也就是說1個機器周期分為12個時鍾周期。請你好好理解時鍾周期--機器周期--指令周期三者之間的關系。
目前STC有不少型號的液頌單片機有單時鍾清埋敗周期指令,一個時鍾周期即為一個機器周期,不進行12分頻,就是在1個時鍾周期內可以執行一條指令,但只是部分指令可以單時鍾周期執行,大多指令需要1-6個時鍾周期來完成,相比較而言,已經比普通的12分頻單片機速度快多了。
B. 編寫一個C語言語句,要求輸出這個程序需要運行的時間(用clock()做) 該怎麼寫
#include <轎扒stdio.h>
#include <time.h>
int main(void)
{
int i=123456789;
clock_t start, end;
start = clock();
while(i--);
end = clock();
printf("The time was: %d\n", (end - start));/閉神昌/瞎李單位是毫秒,注意是%d,不再是%f
printf("The time was: %f\n", (double)(end - start) / CLK_TCK); //單位是秒
return 0;
}
C. C語言怎樣獲取系統當前的時間並把它保存到定義的變數中
C語言中讀取系統時間的函數為time(),其函數原型為:
#include <time.h>
time_t time( time_t * ) ;
time_t就是long,函數返回從1970年1月1日(MFC是1899年12月31日)0時0分0秒,到現在的的秒數。
C語言還提供了將秒數轉換成相應的時間格式的函數:
char * ctime(const time_t *timer); //將日歷時間轉換成本地時間,返回轉換後的字元串指針 可定義字元串或是字元指針來接收返回值
struct tm * gmtime(const time_t *timer); //將日歷時間轉化為世界標准時間(即格林尼治時間),返回結構體指針 可定義struct tm *變數來接收結果
struct tm * localtime(const time_t * timer); //將日歷時間轉化為本地時間,返回結構體指針 可定義struct tm *變數來接收結果
例:
#include<time.h>
voidmain()
{
time_tt;
structtm*pt;
char*pc;
time(&t);
pc=ctime(&t);printf("ctime:%s",pc);
pt=localtime(&t);printf("year=%d",pt->tm_year+1900);
}
時間結構體struct tm 說明:
structtm{
inttm_sec;/*秒–取值區間為[0,59]*/
inttm_min;/*分-取值區間為[0,59]*/
inttm_hour;/*時-取值區間為[0,23]*/
inttm_mday;/*一個月中的日期-取值區間為[1,31]*/
inttm_mon;/*月份(從一月開始,0代表一月)-取值區間為[0,11]*/
inttm_year;/*年份,其值等於實際年份減去1900*/
inttm_wday;/*星期–取值區間為[0,6],其中0代表星期天,1代表星期一,以此類推*/
inttm_yday;/*從每年的1月1日開始的天數–取值區間為[0,365],其中0代表1月1日,1代表1月2日,以此類推*/
inttm_isdst;/*夏令時標識符,實行夏令時的時候,tm_isdst為正。不實行夏令時的進候,tm_isdst為0;不了解情況時,tm_isdst()為負。*/
};
D. C語言編程題讀取時間求助,謝大佬了!
字元轉整形的宴團敗簡單應用,晌顫使用或禪到頭文件 math.h。
例如:
void TimeGet(const MYTIME *time, int *hour, int *minute, int *second)
{
*hourt = atoi(&time->hour);
*minute= atoi(&time->minute);
*second= atoi(&time->second);
}
E. C語言如何獲取本地時間,然後取時、分、秒的值
#include <stdio.h>
#include <time.h>
int main()
{time_t timep;
struct tm *tp;
time(&timep);
int p;
tp = localtime(&timep); //取得系統時間
printf("Today is %d-%d-%d ", (1900 + tp->tm_year), (1 + tp->tm_mon), tp->tm_mday);
printf("Now is %d:%02d:%02d ", tp->tm_hour, tp->tm_min, tp->tm_sec);
p=tp->tm_sec;
printf("p=%d ",p);
return 0;
}
F. C語言運行一條語句所用時間如何計算
把time.h
include進來
然後在代碼的前面和後面都加一條代碼,獲得時間
long
start=clock();
long
end=clock();
兩個減一下就是秒數
G. c語言運行一條指令要多少時間
這個需要分情況來看。
1.C語言源程序通過預處理然後編譯,產生匯編代碼,不同的匯編代碼和指令有不同的執行時間。
2.一個指令的執行時間,用其所需要的指令周期(執行一條指令所需要的時間)來衡量。對於單位元組指令,就是一個讀取-執行周期(fetch-execute cycle),對於多位元組指令,還需要更多的指令周期。
3.一個指令周期,一般是由若干個機器周期(完成一次基本操作需要的時間,比如獲取變數在RAM當中的地址)組成。
4.再一個,時鍾周期,這個可以形象一點地和通常所說的主頻聯系起來,比如CPU核心的主頻是2.5GHz,則時鍾周期為0.4ns,這個是計算機當中最小的時間計量單位。一個機器周期由若干個時鍾周期組成。
H. c語言編程,怎麼計算時間
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
unsigned char time1[] = {10, 8, 31, 9, 26 };
unsigned char time2[] = { 10, 8, 31, 9, 50 };
struct tm t1 = {0};
struct tm t2 = {0};
time_t _t1;
time_t _t2;
double diff;
t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];
t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];
_t1 = _mkgmtime( &t1 );
_t2 = _mkgmtime( &t2 );
diff = difftime(_t2, _t1 );
printf( "相差 %.0f 分鍾
", diff / 60 );
}
(8)c語言讀變數所需時間擴展閱讀:
C語言中有兩個相關的函數用來計算時間差,分別是:
time_t time( time_t *t) 與 clock_t clock(void)
頭文件: time.h
計算的時間單位分別為: s , ms
time_t 和 clock_t 是函數庫time.h 中定義的用來保存時間的數據結構
返回值:
1、time : 返回從公元1970年1月1號的UTC時間從0時0分0秒算起到現在所經過的秒數。如果參數 t 非空指針的話,返回的時間會保存在 t 所指向的內存。
2、clock:返回從「開啟這個程序進程」到「程序中調用clock()函數」時之間的CPU時鍾計時單元(clock tick)數。 1單元 = 1 ms。
所以我們可以根據具體情況需求,判斷採用哪一個函數。
具體用法如下例子:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
time_t c_start, t_start, c_end, t_end;
c_start = clock(); //!< 單位為ms
t_start = time(NULL); //!< 單位為s
system("pause");
c_end = clock();
t_end = time(NULL);
//!<difftime(time_t, time_t)返回兩個time_t變數間的時間間隔,即時間差
printf("The pause used %f ms by clock() ",difftime(c_end,c_start));
printf("The pause used %f s by time() ",difftime(t_end,t_start));
system("pause");
return 0;
}
因此,要計算某一函數塊的佔用時間時,只需要在執行該函數塊之前和執行完該函數塊之後調用同一個時間計算函數。再調用函數difftime()計算兩者的差,即可得到耗費時間。
I. C語言運行一條語句所用時間如何計算
unsigned long HighStart,LowStart,HighEnd,LowEnd;
__int64 start =0;
__int64 end = 0;
__int64 timer =0;
//獲取代碼運行開始時cpu內部計數器的值
__asm
{
RDTSC
mov HighStart, edx
mov LowStart, eax
}
for(int i= 0; i<100000; i++ )
{
for(int i= 0; i<100000; i++ )
{
}
}
//獲取代碼結束時cpu內部計數器的值,並減去初值
__asm
{
RDTSC
mov HighEnd, edx
mov LowEnd, eax
}
start = (__int64) HighStart<<32;
start |= (__int64) LowStart;
end = (__int64) HighEnd<<32;
end |= (__int64) LowEnd;
timer = end - start;
//輸出代碼段運行的時鍾周期數
//以頻率1.1Gcpu為例,如果換計算機把其中的2.6改乘其它即可,因為相信大家的cpu都應該在1G以上 ^_^
cout<< (double) (timer /2.6/1000000000) << endl;
return 0;
J. c語言定義變數為什麼不需要時間
大家都沒有說到點上。
我知道你的迷茫之處在哪裡。你是搞混了,如果是你之前就手動定義好的變數,比如全明擾局變數int i,是不佔用時間的,因為編譯過程就完成了,如果是函數內的局部變數,按理說是在函數調用時才分配,但是有的編譯器也是一次性定義好了,需要看編橋槐笑譯器。最好的測試方法就是動態內存申請,這個肯定是需要時間的,在這里,你的敏含理解就是正確的了。malloc()等等,不信你試試。