c语言查表程序,C语言查表法问题
在设计内存管理器时,经常需要根据内存的size找到对应的数组index,查表是个不错的解决办法。
假设有一个数组,数组中每个元素代表一个范围,任意给定一个数,要尽可能快得找到其对应的数组索引,有什么好的办法么?
例如,数组为范围 [0,1) [1,2) [2,4) [4,8) [8,16) [16,32) [32,64) [64,128)
索引 0 1 2 3 4 5 6 7
给定一个数37,那么由于在[32,64)范围内,故应返回索引6.通过以下程序可生成一张索引表:
#include
#define MIN_MASK 5
#define MAX_MASK 12
#define MIN_VALUE (1<
#define MAX_VALUE (1<
#define DIF_VAL (1<
#define ONELINE_MASK 4
#define ONELINE (1<
int main(void)
{
FILE* fp=fopen("data.txt","w");
fprintf(fp,"static char index_table[]={\n\t");
int idx=0,idv=1,lnc=1,i;
for(i=0;i
{
if(i>=idv)
{
idx++;idv<<=1;
}
if(lnc>ONELINE)
{
fprintf(fp,"\n\t");
lnc=1;
}
fprintf(fp,"%d, ",idx);
}
fprintf(fp,"\n};");
fclose(fp);
return 0;
}
生成如下查找表
static char index_table[]={
0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
};
~
则可通过size_to_index完成从size到index的转换int size_to_index(unsigned int
size)
{ return index_table[size >> MIN_MASK];}
c语言查表程序,C语言查表法问题相关推荐
- c语言定时器实验程序,C语言定时器实验.doc
C语言定时器实验 实验三 C语言定时器实验 一.实验目的 1.进一步熟悉DSP的中断机制 2.在掌握中断服务程序编写的基础上进一步熟悉定时器的运用 3.进一步掌握如何编写DSP中断服务子程序 二.实验 ...
- 趣味c语言代码,趣味程序C语言
<趣味程序C语言>由会员分享,可在线阅读,更多相关<趣味程序C语言(36页珍藏版)>请在人人文库网上搜索. 1.趣味程序导学C语言,你玩过电脑游戏吗?,你喜欢电脑游戏吗?,电脑 ...
- c语言行计数程序,C语言非常简单的字符统计程序50行
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 该程序用于实现linux系统中wc命令的最简单模式 wc 命令用于统计文件中字符信息. [xx@localhost 1.5]$ wc 01.c 02.c ...
- c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...
c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...
- c语言中用temp程序,e__temp_c语言第02章作业.doc
e__temp_c语言第02章作业 C语言程序设计第02章作业 单选题 1.假定有以下变量定义:int k=7,x=12; 则能使值为3 的表达式是_______. A)x%=(k%=5) B)x%= ...
- c语言银行存钱程序,c语言银行存钱.doc
c语言银行存钱 红河学院工学院 课 程 设 计 报 告 专业:计算机技术与科学 年级: 11 级 学号:6 姓名: 曹 永 前 成绩: 批改时间: 红河学院 工学院编制说 明 1.本报告供学生课程设计 ...
- c语言英文排版程序,C语言设计—英文排版系统精品.docx
一.C语言课程设计的目的: 高级语言课程设计是学习完<高级语言程序设计>课程后进行的一次全面的综合性上机实验.其目 的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和 ...
- c语言字符游动程序,C语言实现扫雷小游戏详解
本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位 ...
- c语言malloc函数程序,c语言 malloc函数详解
谈到malloc函数相信学过c语言的人都很熟悉,但是malloc底层到底做了什么又有多少人知道. 1.关于malloc相关的几个函数 关于malloc我们进入Linux man一下就会得到如下结果: ...
最新文章
- 缓冲区溢出基本C程序的控制台和Win32版本
- idea命令行运行多个客户端_推荐一款神仙颜值的 Redis 客户端工具,开源啦
- mysql脚本编写与案例_MySQL语句执行顺序和编写顺序实例解析
- python错误集合
- Linux Crontab 详解
- android 保留edittext中的文字不被后面添加的文字覆盖_【Go语言绘图】图片添加文字(一)...
- python中tree安装_Python 学习笔记:Jupyter Notebook 的安装使用以及 tree 路径变更
- mysql有varchar2吗_char、varchar、varchar2区别
- 声纹识别技术的现状、局限与趋势
- 【优化调度】基于NSGAII算法的车辆充电调度策略研究含Matlab代码
- 数字货币智能合约:分析以太坊信标链
- 使用JLink SEGGER_RTT_printf()函数实现打印浮点数
- Linux-C C语言编译过程
- 设计模式的六大原则(SOLID)
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 嵌入式设备启动过程(ARM )
- ORA-22835:缓冲区对于CLOB到CHAR转换或BLOB到RAWZ转换而言太小。
- vue+supermap三维地图(场景 模型 打包问题 报错)
- “无实物尝百味”通过控制微电流刺激产生味觉—3.复位配网和电量报警实现篇
- ZigBee网络基础