六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 33|回复: 0

a simple bit vector

[复制链接]

升级  59.33%

112

主题

112

主题

112

主题

举人

Rank: 3Rank: 3

积分
378
 楼主| 发表于 2013-1-26 12:36:33 | 显示全部楼层 |阅读模式
#include <stdio.h>#define BYTE_LEN 8unsigned int direct_address_search(int T[], int k) {  int byte_offset = k / BYTE_LEN;  int bit_offset = k % BYTE_LEN;  return (T[byte_offset] >> bit_offset) & 1u;}void direct_address_insert(int T[], int k) {  int byte_offset = k / BYTE_LEN;  int bit_offset = k % BYTE_LEN;  T[byte_offset] |= (1u << bit_offset);}void direct_address_delete(int T[], int x) {  int byte_offset = x / BYTE_LEN;  int bit_offset = x % BYTE_LEN;  T[byte_offset] &= (0u << bit_offset);}void info(unsigned int T[], int size) {  int i;  for (i = 0; i < size; i++) {    printf("%d: %#X\n", i, T[i]);   }}int main(int argc, const char *argv[]) {  /* A 16 bit bit-vector */  unsigned int T[2] = {0};  direct_address_insert(T, 0);  direct_address_insert(T, 2);  printf("bit 1 is %d\n", direct_address_search(T, 1));  printf("bit 2 is %d\n", direct_address_search(T, 2));  info(T, 2);  direct_address_delete(T, 0);  direct_address_delete(T, 2);  return 0;}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表