首页
导航
博客
电子书
算法
众创
代码
随贴
关于我们
您好,欢迎来到码863代码分享网! 请
[登录]
/
[注册]
搜 索
C语言把整数转换成二进制字符串
编辑
打开60行测试有无register区别
代码正文
双击正文可选择全部
1[代码][c]register用在大量循环中才能节省时间,不然很难看出效果
尝试一下
#include <time.h> #include <stdio.h> char * itobs(register int n, register char * ps) { register int size = 8 * sizeof(int); for (register int i = size - 1; i >= 0; i--, n >>= 1) ps[i] = (01 & n) + '0'; ps[size] = '\0'; return ps; } char * getBin(register int num,register char *p) { register int w=sizeof(int)*8; p[0]='\0'; for (register int i = w - 1; i >= 0; i--) { register _Bool bit = (num >> i) & 1; push(p,bit ? '1':'0'); //if(i%8==0) push(p,' ');//8位空一格 } return p; } void push(register char *p,register char c) { register int len=strlen(p); p[len]=c; p[len+1]='\0'; } /*4位一组显示二进制字符串 */ void show_bstr(const register char * str) { register int i = 0; while (str[i]){ putchar(str[i]); if (++i % 8 == 0 && str[i]) putchar(' '); } } int add(register int i){ for(register int j=1;j<=1147483646;j++)//2147483647 i++; return i; } int main(void) { clock_t start_t, end_t; char t[65]; int i=0; start_t = clock(); printf("程序启动,start_t = %ld\n", start_t); printf("%d\n",'A'); show_bstr(itobs('A',t)); printf("\n"); show_bstr(getBin('A',t)); //i=add(i); end_t = clock(); printf("\n大循环结束,end_t = %ld\n", end_t); printf("CPU 占用的总时间:%f秒 %d\n", (double)(end_t - start_t) / CLOCKS_PER_SEC,i); return 0; } /*运行结果 程序启动,start_t = 1369 65 00000000 00000000 00000000 01000001 00000000 00000000 00000000 01000001 大循环结束,end_t = 1425 CPU 占用的总时间:0.000056秒 0 */
2[代码][c]这里不用register
尝试一下
#include <time.h> #include <stdio.h> char * itobs(int n, char * ps) { int size = 8 * sizeof(int); for (int i = size - 1; i >= 0; i--, n >>= 1) ps[i] = (01 & n) + '0'; ps[size] = '\0'; return ps; } char * getBin(int num,char *p) { int w=sizeof(int)*8; p[0]='\0'; for (int i = w - 1; i >= 0; i--) { _Bool bit = (num >> i) & 1; push(p,bit ? '1':'0'); //if(i%8==0) push(p,' ');//8位空一格 } return p; } void push(char *p,char c) { int len=strlen(p); p[len]=c; p[len+1]='\0'; } /*4位一组显示二进制字符串 */ void show_bstr(const char * str) { int i = 0; while (str[i]){ putchar(str[i]); if (++i % 8 == 0 && str[i]) putchar(' '); } } int add(int i){ for(int j=1;j<=1147483646;j++)//2147483647 i++; return i; } int main(void) { clock_t start_t, end_t; char t[65]; int i=0; start_t = clock(); printf("程序启动,start_t = %ld\n", start_t); printf("%d\n",'A'); show_bstr(itobs('A',t)); printf("\n"); show_bstr(getBin('A',t)); //i=add(i); end_t = clock(); printf("\n大循环结束,end_t = %ld\n", end_t); printf("CPU 占用的总时间:%f秒 %d\n", (double)(end_t - start_t) / CLOCKS_PER_SEC,i); return 0; } /*运行结果 程序启动,start_t = 1358 65 00000000 00000000 00000000 01000001 00000000 00000000 00000000 01000001 大循环结束,end_t = 1415 CPU 占用的总时间:0.000057秒 0 */
文明上网理性发言,请遵守新闻评论服务协议
0 条评论
发布评论
全部评论
最新
/
最热
暂无评论
加载更多
CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网
湘ICP备2023018646号-1
MYSQl共执行 3 个查询,用时 0.0020158290863037 秒,PHP脚本用时 0.004245 秒,占用内存 0.509 MB,Gzip 已启用