当前位置: 首页 > news >正文

连云港网站推广优化wordpress 盗链

连云港网站推广优化,wordpress 盗链,品牌网站建设 优帮云,凡客诚品app学习交流加#xff08;可免费帮忙下载CSDN资源#xff09;#xff1a;个人微信#xff1a; liu1126137994学习交流资源分享qq群1#xff08;已满#xff09;#xff1a; 962535112学习交流资源分享qq群2#xff1a; 780902027 今天有朋友遇到一个笔试题#xff1a;一个… 学习交流加可免费帮忙下载CSDN资源个人微信 liu1126137994学习交流资源分享qq群1已满 962535112学习交流资源分享qq群2 780902027 今天有朋友遇到一个笔试题一个 4096位的bit数组要找出前10个二进制的1 所在的位置麻烦写一个函数来实现 bit数组对我来说是一个新的概念故整理资料学习bit数组的概念~ 加qq1126137994一起学习更多技术 文章目录1、位数组的概念将一个整数添加到二进制数组中 判断一个整数是否在二进制数组中删除二进制数组中的一个整数完整代码1、位数组的概念 所谓的位数组主要是为了有效地利用内存空间而设计的一种存储数据的方式。在这种结构中一个整数在内存中用一位1 bit表示。这里所谓的表示就是如果整数存在相应的二进制位就为1否则为0。 主要思想我们知道一个 char 类型的数据在内存中占用 1Byte即 8 bit如果我们用二进制位在内存中的顺序来代表整数则可以存储更多的信息。 这样的话一个 char 类型可以存储 8个整数。假设 a是一个 char 数组的话整数8就可以用 a[1] 的第一个二进制位表示了。那么512字节就是4096位第一位代表0第二位代表1第三位代表2第4096位代表4095这样我们就可以用512字节存储4096个数了大大的节省了内存空间。 这里的关键就是 一个char型能表示8个整数。 下面我实现一种利用 char 数组构造一个二进制数组。主要包括以下三个方面 将一个整数添加到二进制数组中 void add_to_bitarray(char *bitarr, int num){ /* num代表要插进数组中的数 */bitarr[num SHIFT] | (1 (num MASK)); /* MASK 为 0x7 */ }该方法的主要作用是将二进制数组中表示该整数的位置为1。首先我们得找到该整数位于 char 数组的第几个元组中这里利用该整数除以8即可代码中除以8用右移三位实现例如整数25位于25/8 3 余 1表明该整数是用char 数组的第四个元素的第二位表示。那么在该元素的第几位可以利用该整数的后三位表示0~7刚好可以表示8个位置即 25 0x7 1则代表25在该元素的第二位。将相应位置1可以先将整数1左移相应位数然后与二进制数组进行或操作即可。 判断一个整数是否在二进制数组中 int is_in_bitarray(char *bitarr, int num){return bitarr[num SHIFT] (1 (num MASK)); } 先找到该整数在二进制数组中的位置然后判断该位是否为1若是则表示该整数位于二进制数组中反之不在数组中。 删除二进制数组中的一个整数 void clear_bitarray(char *bitarr, int num){bitarr[num SHIFT] ~(1 (num MASK)); }思路相同先找到该整数在二进制数组中的位置然后将该位置为0即可。 完整代码 完整的代码如下 #include stdio.h #include stdlib.h #include string.h #define SHIFT 3 #define MASK 0x7 char *init_bitarray(int); void add_to_bitarray(char *, int); int is_in_bitarray(char *, int); void clear_bitarray(char *, int); void test(char *);int main(){char *arr;arr init_bitarray(100);add_to_bitarray(arr, 25);test(arr);clear_bitarray(arr, 25);test(arr);getchar();return 0; }char *init_bitarray(int size){char *tmp;tmp (char*)malloc(size / 8 1);memset(tmp, 0, (size / 8 1)); //initial to 0 return tmp; }void add_to_bitarray(char *bitarr, int num){ /* num代表要插进数组中的数 */bitarr[num SHIFT] | (1 (num MASK)); }int is_in_bitarray(char *bitarr, int num){return bitarr[num SHIFT] (1 (num MASK)); }void clear_bitarray(char *bitarr, int num){bitarr[num SHIFT] ~(1 (num MASK)); }void test(char *bitarr){if (is_in_bitarray(bitarr, 25) ! 0)printf(25 in\n);elseprintf(25 not in\n);if (is_in_bitarray(bitarr, 30) ! 0)printf(30 in\n);elseprintf(30 not in\n); }以上是对位数组概念的理解以及如何创建位数组 在VS中运行结果如下 下面来解决我们最开始留下的笔试题 一个 4096位的bit数组要找出前10个二进制的1 所在的位置麻烦写一个函数来实现。 假设我们这个数组存储的是char类型的512字节我们利用上面的函数来构造bit数组可以往特定的位填1然后写出函数来查找前10个1所在的位置并返回位置 #include stdio.h #include stdlib.h #include string.h #define N_bit 4096 #define SHIFT 3 #define MASK 0x7 char *init_bitarray(int); void add_to_bitarray(char *, int);char *init_bitarray(int size){char *tmp;tmp (char*)malloc(size / 8 1);memset(tmp, 0, (size / 8 1)); //initial to 0 return tmp; }void add_to_bitarray(char *bitarr, int num){ /* num代表要插进数组中的数 */bitarr[num SHIFT] | (1 (8 - (num MASK))); }void add_1_to_bitarr(char *bit_arr) {add_to_bitarray(bit_arr, 25);add_to_bitarray(bit_arr, 28);add_to_bitarray(bit_arr, 23);add_to_bitarray(bit_arr, 67);add_to_bitarray(bit_arr, 35);add_to_bitarray(bit_arr, 36);add_to_bitarray(bit_arr, 55);add_to_bitarray(bit_arr, 69);add_to_bitarray(bit_arr, 44);add_to_bitarray(bit_arr, 97);add_to_bitarray(bit_arr, 421);add_to_bitarray(bit_arr, 564);add_to_bitarray(bit_arr, 987);add_to_bitarray(bit_arr, 684);add_to_bitarray(bit_arr, 986);add_to_bitarray(bit_arr, 658);add_to_bitarray(bit_arr, 354);add_to_bitarray(bit_arr, 764);add_to_bitarray(bit_arr, 691);add_to_bitarray(bit_arr, 36);add_to_bitarray(bit_arr, 345); } int main() {char *bit_arr;bit_arr init_bitarray(4096);add_1_to_bitarr(bit_arr);int num[10];int k 1;for (int i 0; i N_bit / 8 1; i){for (int j 1; j 8 k 10; j){if ((bit_arr[i] 128) 128){num[k] i * 8 j 1;k;}bit_arr[i] 1;}}for (int n 1; n 10; n){printf(第%d个1位置为:%d位\n, n, num[n]);}//getchar();return 0; }运行结果为 我们看到前10 个1 的位置都比我们填入到数组中的位置大1是因为我们认为4096位是从第一个1开始而数组是从第0号开始所以产生了偏移 到此我们已经用了一种方法来解决这个笔试题同时也学会了一个新的概念位数组
http://www.huolong8.cn/news/72499/

相关文章:

  • 自己能做企业网站吗自己电脑做服务器上传网站 需要备案吗
  • 企业网站开发制作做百度网络营销推广
  • 付费资源下载站源码wordpress 首页代码
  • 网站建设 中企动力 东莞青岛有没有做网站的
  • 拥有服务器后如何做网站深圳罗湖企业网站优化价格
  • 网站建设预算表样本知名网站建设加盟合作
  • 建个网站需要多少钱一个wordpress主题怎么上传
  • 网站开发综合设计报告深圳微商城网站设计制作
  • 网站建设的分析永久免费安卓代理ip
  • 网站系统设计目标搜索营销案例
  • 下城网站建设昂昂溪网站建设
  • 各种网站末班求十大猎头公司排名
  • 茶的网站制作做防水施工 上什么网站找
  • 自己的网站怎么做wordpress outdoor
  • wordpress建站 购物百度广告优化
  • 芜湖市住房和城乡建设厅网站汉化版wordpress
  • 什么是网站域名wordpress2.4
  • 网站模板库南京外贸网站建设案例
  • 大兴黄村网站建设公司wordpress 照片分享
  • 宣化网站制作公司网站建设虚拟主机
  • 写作网站起点怎么进入邯郸论坛网
  • 网站链接推广怎么做模板之家网页模板下载
  • 教育网站开发文档wordpress4.8.1模板
  • 深圳wap网站建设公司360站长平台链接提交
  • 如何让自己的网站被搜索引擎收录网站可以做第三方检测报告
  • 溆浦县建筑公司网站小企业一键做网站
  • 网站建设好学吗做期权关注哪个网站
  • 企业级网站建设注册子公司流程及所需资料
  • 网站名查找公司网站建设服务类别
  • 邓州网站设计学校招标网站建设