最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)的bitmap位圖代碼分享

 更新時(shí)間:2014年08月28日 10:09:32   投稿:junjie  
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的bitmap位圖代碼分享,位圖(bitmap)是一種非常常用的結(jié)構(gòu),在索引、數(shù)據(jù)壓縮等方面有廣泛應(yīng)用,需要的朋友可以參考下

事實(shí)上,我們是用每一個(gè) 元素表示一個(gè)32位的二進(jìn)制字符串,這樣這個(gè)元素可以保留相鄰32個(gè)號(hào)碼是否存在的信息,數(shù)組范圍就下降到10000000/32了.例如對(duì)于號(hào)碼 89256,由于89256 mod 32=2789…8,這樣我們應(yīng)該置a[2789]中32位字符串的第8位(從低位數(shù)起)為1.

#define WORD 32
#define SHIFT 5 ////移動(dòng)5個(gè)位,左移則相當(dāng)于乘以32,右移相當(dāng)于除以32取整
#define MASK 0x1F //16進(jìn)制下的31
#define N 10000000
int bitmap[1 + N / WORD];
/*
 * 置位函數(shù)——用"|"操作符,i&MASK相當(dāng)于mod操作
 * m mod n 運(yùn)算,當(dāng)n = 2的X次冪的時(shí)候,m mod n = m&(n-1)
 */
void set(int i) {
 bitmap[i >> SHIFT] |= (1 << (i & MASK));
}
/* 清除位操作,用&~操作符 */
void clear(int i) {
 bitmap[i >> SHIFT] &= ~(1 << (i & MASK));
}
/* 測(cè)試位操作用&操作符 */
int test(int i) {
 return bitmap[i >> SHIFT] & (1 << (i & MASK));
}

實(shí)現(xiàn)排序(不能重復(fù)):

int main(void) {
 FILE *in = fopen("in.txt", "r");
 FILE *out = fopen("out.txt", "w");
 if (in == NULL || out == NULL) {
 exit(-1);
 }
 int i = 0;
 int m;
 for (i = 0; i < N; i++) {
 clear(i);
 }
 while (!feof(in)) {
 fscanf(in, "%d", &m);
 printf("%d/n", m);
 set(m);
 }
 printf("abnother");
 for (i = 0; i < N; i++) {
 if (test(i)) {
  printf("%d/n", i);
  fprintf(out, "%d/n", i);
 }
 }
 fclose(in);
 fclose(out);
 return EXIT_SUCCESS;
}

相關(guān)文章

  • C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)

    C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)

    堆是一個(gè)近似完全二叉樹的結(jié)構(gòu),并同時(shí)滿足堆積的性質(zhì),下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之堆、堆排序的分析及實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • C++ Boost Atomic詳細(xì)講解

    C++ Boost Atomic詳細(xì)講解

    Boost是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱。Boost庫(kù)是一個(gè)可移植、提供源代碼的C++庫(kù),作為標(biāo)準(zhǔn)庫(kù)的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供擴(kuò)展的一些C++程序庫(kù)的總稱
    2022-11-11
  • 在C++中實(shí)現(xiàn)aligned_malloc的方法

    在C++中實(shí)現(xiàn)aligned_malloc的方法

    這篇文章主要介紹了在C++中實(shí)現(xiàn)aligned_malloc的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • QT+OpenGL實(shí)現(xiàn)簡(jiǎn)單圖形的繪制

    QT+OpenGL實(shí)現(xiàn)簡(jiǎn)單圖形的繪制

    這篇文章主要為大家詳細(xì)介紹了如何利用QT和OpenGL實(shí)現(xiàn)簡(jiǎn)單圖形的繪制,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下
    2022-12-12
  • C語(yǔ)言圖文并茂講解分支語(yǔ)句用法

    C語(yǔ)言圖文并茂講解分支語(yǔ)句用法

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ(yǔ)句
    2022-04-04
  • c++回調(diào)之利用函數(shù)指針示例

    c++回調(diào)之利用函數(shù)指針示例

    這篇文章主要介紹了c++利用函數(shù)指針示例,需要的朋友可以參考下
    2014-04-04
  • 淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別

    淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談C語(yǔ)言共用體和與結(jié)構(gòu)體的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能

    C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能

    這篇文章主要介紹了C++函數(shù)pyrUp和pyrDown來(lái)實(shí)現(xiàn)圖像金字塔功能,如何使用OpenCV函數(shù) pyrUp 和 pyrDown 對(duì)圖像進(jìn)行向上和向下采樣,需要的朋友可以參考下
    2017-03-03
  • C++實(shí)現(xiàn)MyString的示例代碼

    C++實(shí)現(xiàn)MyString的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)MyString的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語(yǔ)言編程數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解

    C語(yǔ)言編程數(shù)據(jù)在內(nèi)存中的存儲(chǔ)詳解

    本篇文章是C語(yǔ)言編程篇,主要為大家介紹C語(yǔ)言編程中數(shù)據(jù)在內(nèi)存中存儲(chǔ)解析,有需要的朋友可以借鑒參考下,希望可以有所幫助
    2021-09-09

最新評(píng)論

霞浦县| 和硕县| 和政县| 安岳县| 宜州市| 嘉兴市| 宁乡县| 甘德县| 岗巴县| 安丘市| 静乐县| 石棉县| 仁化县| 饶阳县| 惠东县| 逊克县| 双牌县| 弥勒县| 田东县| 曲阜市| 鸡西市| 永和县| 张家口市| 武宁县| 香格里拉县| 沁源县| 武鸣县| 商丘市| 辽宁省| 连州市| 景东| 洞头县| 夹江县| 红桥区| 新河县| 田阳县| 利川市| 右玉县| 常熟市| 齐河县| 贵溪市|