日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

位图数据结构

發(fā)布時間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 位图数据结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1 位圖數(shù)據(jù)結(jié)構(gòu)
      • 1.1 位圖定義
      • 1.2 位圖實現(xiàn)

1 位圖數(shù)據(jù)結(jié)構(gòu)

1.1 位圖定義

位圖概述:

  • 位圖是一組連續(xù)的標志位,每一位用于標識某種狀態(tài)的有無。

操作接口:

  • 初始化:將所有的位清零。
  • 設(shè)置某1位。
  • 清除某1位。
  • 尋找第一個置位的位置(從第0位開始)。

尋找第一個置位的位置:

  • 移位測試(稍慢)。
  • 分組查表(較快)。

1.2 位圖實現(xiàn)

位圖結(jié)構(gòu)定義:

位圖初始化:

設(shè)置指定位:

清除指定位:

尋找第一個置位的位置(從第0位開始):


tLib.h:

/*************************************** Copyright (c)****************************************************** ** File name : tLib.h ** Latest modified Date : 2016-06-01 ** Latest Version : 0.1 ** Descriptions : tinyOS所用的通用數(shù)據(jù)結(jié)構(gòu)庫文件。 ** **-------------------------------------------------------------------------------------------------------- ** Created by : 01課堂 lishutong ** Created date : 2016-06-01 ** Version : 1.0 ** Descriptions : The original version ** **-------------------------------------------------------------------------------------------------------- ** Copyright : 版權(quán)所有,禁止用于商業(yè)用途 ** Author Blog : http://ilishutong.com **********************************************************************************************************/ #ifndef TLIB_H #define TLIB_H// 標準頭文件,里面包含了常用的類型定義,如uint32_t #include <stdint.h>// 位圖類型 typedef struct {uint32_t bitmap; }tBitmap;/********************************************************************************************************** ** Function name : tBitmapInit ** Descriptions : 初始化bitmap將所有的位全清0 ** parameters : 無 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapInit (tBitmap * bitmap);/********************************************************************************************************** ** Function name : tBitmapPosCount ** Descriptions : 返回最大支持的位置數(shù)量 ** parameters : 無 ** Returned value : 最大支持的位置數(shù)量 ***********************************************************************************************************/ uint32_t tBitmapPosCount (void);/********************************************************************************************************** ** Function name : tBitmapSet ** Descriptions : 設(shè)置bitmap中的某個位 ** parameters : pos 需要設(shè)置的位 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapSet (tBitmap * bitmap, uint32_t pos);/********************************************************************************************************** ** Function name : tBitmapClear ** Descriptions : 清除bitmap中的某個位 ** parameters : pos 需要清除的位 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapClear (tBitmap * bitmap, uint32_t pos);/********************************************************************************************************** ** Function name : tBitmapGetFirstSet ** Descriptions : 從位圖中第0位開始查找,找到第1個被設(shè)置的位置序號 ** parameters : 無 ** Returned value : 第1個被設(shè)置的位序號 ***********************************************************************************************************/ uint32_t tBitmapGetFirstSet (tBitmap * bitmap);#endif /* TLIB_H */

tBitmap.c:

/*************************************** Copyright (c)****************************************************** ** File name : tBitmap.c ** Latest modified Date : 2016-06-01 ** Latest Version : 0.1 ** Descriptions : tinyOS所用的位圖數(shù)據(jù)結(jié)構(gòu)。 ** **-------------------------------------------------------------------------------------------------------- ** Created by : 01課堂 lishutong ** Created date : 2016-06-01 ** Version : 1.0 ** Descriptions : The original version ** **-------------------------------------------------------------------------------------------------------- ** Copyright : 版權(quán)所有,禁止用于商業(yè)用途 ** Author Blog : http://ilishutong.com **********************************************************************************************************/ #include "tLib.h"/********************************************************************************************************** ** Function name : tBitmapInit ** Descriptions : 初始化bitmap將所有的位全清0 ** parameters : 無 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapInit (tBitmap * bitmap) {bitmap->bitmap = 0; }/********************************************************************************************************** ** Function name : tBitmapPosCount ** Descriptions : 返回最大支持的位置數(shù)量 ** parameters : 無 ** Returned value : 最大支持的位置數(shù)量 ***********************************************************************************************************/ uint32_t tBitmapPosCount (void) {return 32; }/********************************************************************************************************** ** Function name : tBitmapSet ** Descriptions : 設(shè)置bitmap中的某個位 ** parameters : pos 需要設(shè)置的位 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapSet (tBitmap * bitmap, uint32_t pos) {bitmap->bitmap |= 1 << pos; }/********************************************************************************************************** ** Function name : tBitmapClear ** Descriptions : 清除bitmap中的某個位 ** parameters : pos 需要清除的位 ** Returned value : 無 ***********************************************************************************************************/ void tBitmapClear (tBitmap * bitmap, uint32_t pos) {bitmap->bitmap &= ~(1 << pos); }/********************************************************************************************************** ** Function name : tBitmapGetFirstSet ** Descriptions : 從位圖中第0位開始查找,找到第1個被設(shè)置的位置序號 ** parameters : 無 ** Returned value : 第1個被設(shè)置的位序號 ***********************************************************************************************************/ uint32_t tBitmapGetFirstSet (tBitmap * bitmap) {static const uint8_t quickFindTable[] = {/* 00 */ 0xff, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 10 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 20 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 30 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 40 */ 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 50 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 60 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 70 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 80 */ 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* 90 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* A0 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* B0 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* C0 */ 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* D0 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* E0 */ 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,/* F0 */ 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0};if (bitmap->bitmap & 0xff){return quickFindTable[bitmap->bitmap & 0xff]; }else if (bitmap->bitmap & 0xff00){return quickFindTable[(bitmap->bitmap >> 8) & 0xff] + 8; }else if (bitmap->bitmap & 0xff0000){return quickFindTable[(bitmap->bitmap >> 16) & 0xff] + 16; }else if (bitmap->bitmap & 0xFF000000){return quickFindTable[(bitmap->bitmap >> 24) & 0xFF] + 24;}else{return tBitmapPosCount();} }

參考資料:

  • 【李述銅】從0到1自己動手寫嵌入式操作系統(tǒng)
  • 總結(jié)

    以上是生活随笔為你收集整理的位图数据结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产成人亚洲精品无码h在线 | 婷婷人体 | 免费视频二区 | av在线色 | 欧美成人高清在线 | 成年人视频在线免费看 | 黑人性高潮| 精品国产99一区二区乱码综合 | 邻居少妇张开双腿让我爽一夜 | 欧美黄色一级生活片 | 亚洲激情视频网站 | 三级a视频| 欧美日韩不卡一区二区三区 | 中文字幕在线观看 | 久久精品视频6 | 国产精品99精品无码视亚 | sm乳奴虐乳调教bdsm | 久操超碰| 免费在线播放视频 | 亚洲aa| 欧美色图影院 | 欧产日产国产精品 | 天堂在线视频免费观看 | av中文字幕在线免费观看 | 综合视频一区二区 | 五月天婷婷丁香 | 中文字幕亚洲色图 | 可以免费观看av的网站 | 懂色av蜜臀av粉嫩av分享吧 | 很黄很污的视频 | 日韩精品人妻一区二区三区免费 | 国产二区在线播放 | 国产精品黄色在线观看 | 国产欧美在线 | 精品一区二区三区在线视频 | 色婷婷精品久久二区二区密 | 99免费看| 久久中文精品 | 大桥未久av一区二区三区中文 | 亚洲精品偷拍 | 欧美性极品 | 韩国av免费观看 | 一区二区三区毛片 | 99伊人 | 欧美激情婷婷 | 懂色av粉嫩av蜜乳av | av网站免费在线播放 | 图片区亚洲色图 | 99久久综合国产精品二区 | 九草在线 | 久久综合激情 | 葵司有码中文字幕二三区 | 亚洲精品久久久久久久久久 | 国产噜噜噜噜久久久久久久久 | 国产精品白嫩极品美女视频 | 少妇伦子伦精品无吗 | 欧美一区二区三区婷婷 | 国产精成人品免费观看 | 浴室里强摁做开腿呻吟男男 | 九九爱国产 | 国产精品成人国产乱一区 | 亚洲我射 | 亚洲精品你懂的 | 欧美一a一片一级一片 | 你懂的av在线 | 久久免费视频1 | 精品在线视频一区二区 | 99视频网 | 久久这里只有精品99 | av字幕网 | 久久久最新 | 国产精品免费看片 | 成人一区二区精品 | 一区二区三区精彩视频 | 女同亚洲精品一区二区三 | 无码人妻精品一区二区三区夜夜嗨 | 日本欧美色 | 在线99 | 欧美操老女人 | 国产白丝一区二区三区 | 国产美女视频 | 扒丝袜 | 亚洲婷婷小说 | 欧美成人精品激情在线视频 | 干干干日日日 | 一区二区三区免费看视频 | 99热精品久久 | 清纯唯美亚洲综合 | 成人毛片在线 | 粉色午夜视频 | 华人永久免费视频 | 国产农村熟妇videos | 99极品视频 | 亚洲av永久一区二区三区蜜桃 | 国产又好看的毛片 | 深夜视频在线 | 欧美大白屁股 | 国产69精品久久久久久久 | 包射屋|