⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitops.h

📁 国外网站上的一些精典的C程序
💻 H
字号:
/***  Macros and prototypes for bit operations****  public domain for SNIPPETS by:**    Scott Dudley**    Auke Reitsma**    Ratko Tomic**    Aare Tali**    J. Blauth**    Bruce Wedding**    Bob Stout*/#ifndef BITOPS__H#define BITOPS__H#include <stdio.H>#include <stdlib.h>                             /* For size_t           */#include <limits.h>                             /* For CHAR_BIT         */#include "sniptype.h"                           /* For TOBOOL()         */#include "extkword.h"                           /* For CDECL            *//***  Macros to manipulate bits in any integral data type.*/#define BitSet(arg,posn) ((arg) | (1L << (posn)))#define BitClr(arg,posn) ((arg) & ~(1L << (posn)))#define BitFlp(arg,posn) ((arg) ^ (1L << (posn)))#define BitTst(arg,posn) TOBOOL((arg) & (1L << (posn)))/***  Macros to manipulate bits in an array of char.**  These macros assume CHAR_BIT is one of either 8, 16, or 32.*/#define MASK  CHAR_BIT-1#define SHIFT ((CHAR_BIT==8)?3:(CHAR_BIT==16)?4:8)#define BitOff(a,x)  ((void)((a)[(x)>>SHIFT] &= ~(1 << ((x)&MASK))))#define BitOn(a,x)   ((void)((a)[(x)>>SHIFT] |=  (1 << ((x)&MASK))))#define BitFlip(a,x) ((void)((a)[(x)>>SHIFT] ^=  (1 << ((x)&MASK))))#define IsBit(a,x)   ((a)[(x)>>SHIFT]        &   (1 << ((x)&MASK)))/***  BITARRAY.C*/char *alloc_bit_array(size_t bits);int   getbit(char *set, int number);void  setbit(char *set, int number, int value);void  flipbit(char *set, int number);/***  BITFILES.C*/typedef struct  {      FILE *  file;       /* for stream I/O   */      char    rbuf;       /* read bit buffer  */      char    rcnt;       /* read bit count   */      char    wbuf;       /* write bit buffer */      char    wcnt;       /* write bit count  */} bfile;bfile * bfopen(char *name, char *mode);int     bfread(bfile *bf);void    bfwrite(int bit, bfile *bf);void    bfclose(bfile *bf);/*** BITSTRNG.C*/void bitstring(char *str, long byze, int biz, int strwid);/***  BSTR_I.C*/unsigned int bstr_i(char *cptr);/***  BITCNT_1.C*/int CDECL bit_count(long x);/***  BITCNT_2.C*/int CDECL bitcount(long i);/***  BITCNT_3.C*/int CDECL ntbl_bitcount(long int x);int CDECL BW_btbl_bitcount(long int x);int CDECL AR_btbl_bitcount(long int x);/***  BITCNT_4.C*/int CDECL ntbl_bitcnt(long x);int CDECL btbl_bitcnt(long x);#endif /*  BITOPS__H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -