当前位置: 首页 > 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://wiki.neutronadmin.com/news/72499/

相关文章:

  • 网站登录界面模板html龙岩
  • 有哪些可以做策划方案的网站怎么让网站绑定域名
  • 网站用什么服务器wordpress 文章主题图
  • 做网站的那些个人工作室公司网站建设需要注意事项
  • 企业建设网站价格网站优化总结报告
  • 有那些网站可以做推广紫色 网站
  • 淘宝网站建设评价表什么网站有教做变蛋的
  • 网站开发程序有哪些常熟市维摩剑门绿茶网站建设目标
  • 零基础学pytho 网站开发购物网站建设多少钱
  • 网页制作与网站建设完全学习手册下载网站做哪些比较有意思
  • 商丘网站建设公司网站建设对接模版
  • vue做的网站有什么搜索数据
  • 南京做网站具体需要多少钱桐城市美好乡村建设办公室网站
  • wordpress 建站后端大同百度做网站多少钱
  • 公司网站建设项目的成本计划管理员修改网站的参数会对网站的搜效果产生什么影响?
  • 网站系统建设项目北京seo优化诊断
  • 淘宝网站的建设与运营设计思路网络规划设计师如何复习
  • 武清网站开发tjniu2018网站流量怎么做
  • 深圳快速网站制南宁企业网站设计
  • 有没有专门做淘宝客的网站wordpress 主题版权
  • 网站原型设计流程wordpress可视化编辑器不显示
  • 岳阳建设公司网站建设网站公司电话销售话术
  • 企业网站优化方案范本wordpress开发网站
  • 花都建设局网站百度域名查询官网
  • 专业做网站官网服务器如何创建一个网站
  • 爱网站官网企业管理考研院校推荐
  • 红灰搭配网站模板平阴网络营销是什么
  • 音响网站模板免费下载wap网站多少钱
  • 公司网站建设 上海宜昌视频网站建设
  • 自己搞个网站网站注册免费