bitarray.c
来自「压缩包里面的都是精致的基本C语言小程序」· C语言 代码 · 共 116 行
C
116 行
#include <stdio.h>#include "error.h"#include "mystdlib.h"#include "bitArray.h"struct bitArray{ int *array; int size;};bitArray newBitArray (int size){ bitArray ba = checkedMalloc (sizeof (*ba)); ba->array = checkedMalloc (sizeof(*(ba->array)) * size); for (int i=0; i<size; i++) *(ba->array+i) = 0; ba->size = size; return ba;}void bitArrayChangeBit (bitArray ba, int index){ if (index<0 || index>=ba->size) exception ("index out of bound\n"); *(ba->array+index) = 1; return;}int bitArrayGetBit (bitArray ba, int index){ if (index<0 || index>=ba->size) exception ("index out of bound\n"); return *(ba->array+index);}bitArray bitArrayAnd (bitArray ba1, bitArray ba2){ if (ba1->size != ba2->size) exception ("invalid size\n"); bitArray newBa = newBitArray (ba1->size); for (int i=0; i<ba1->size; i++) { *(newBa->array+i) = (*(ba1->array+i)) & (*(ba2->array+i)); } return newBa;}bitArray bitArrayOr (bitArray ba1, bitArray ba2){ if (ba1->size != ba2->size) exception ("invalid size\n"); bitArray newBa = newBitArray (ba1->size); for (int i=0; i<ba1->size; i++) { int k1 = (*(ba1->array+i)); int k2 = (*(ba2->array+i)); if (k1 || k2) { *(newBa->array+i) = 1; } } return newBa;}bitArray bitArrayNegation (bitArray ba){ bitArray newBa = newBitArray (ba->size); for (int i=0; i<ba->size; i++) { int k = (*(ba->array+i)); if (k) { //printf ("now changing : %d\n", i); *(newBa->array+i) = 0; } else { *(newBa->array+i) = 1; } } return newBa;}void bitArrayOutput (bitArray ba){ for (int i=0; i<ba->size; i++) { printf ("%d->%d\n", i, *(ba->array+i)); } return;}void bitArrayDestroy (bitArray ba){ checkedFree (ba->array); checkedFree (ba); return;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?