利用移位运算、位与、位或,可以查询、修改某一bit的值。程序如下
#define uchar unsigned char
/*测试变量某一位是否为‘1’,是返回真,否返回假,num为待测试的数,bit为位数,其值从0到7,下同*/
uchar bittest(uchar num,uchar bit)
{ if(num>>bit&0x01==1)
return 1;
else
return 0;
}
uchar bitclr(uchar num,uchar bit) /*清除某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num&~bit_value[bit];
}
uchar bitset(uchar num,uchar bit) /*设置某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
return num|bit_value[bit];
}
uchar bitcpl(uchar num,uchar bit) /*取反某一位*/
{
uchar bit_value[]={1,2,4,8,16,32,64,128};
if(num>>bit&0x01==1)
return num&~bit_value[bit];
else
return num|bit_value[bit];
}
/*以下主程序演示,调用时,可以直接给出数值,也可以给出变量名*/
void main(void)
{
uchar xx=0xfe;
xx=bitset(xx,0);
printf("The set out is %x\n",xx);
printf("The clr out is %x\n",bitclr(255,0));
printf("The test out is %x\n",bittest(0xff,0));
printf("The cpl out is %x\n",bitcpl(0x00,7));
}
以上是以TC为例编写的主程序,各函数在其它C语言中也一样可用。
另外,下面的java程序可以计算一个整数的二进制位中1的个数。
public static int bitCount(int i) {
// HD, Figure 5-2
i = i - ((i >>> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
i = (i + (i >>> 4)) & 0x0f0f0f0f;
i = i + (i >>> 8);
i = i + (i >>> 16);
return i & 0x3f;
}
该程序取自java的库文件Integer.class之中,十分高效。
分享到:
相关推荐
数据结构二叉树,数据结构,经典c语言实现,包括增删查改等操作
c语言数据结构链表的增删查改功能,很简单的
单链表的增删查改
数据结构 c语言 线性表 增删查改保存 InitList(Linklist &L,int &k); PrintList(Linklist &L,int &k); ListInsert(Linklist &L,int &k); ListDelete(Linklist &L,int &k); void ListSave(Linklist &L); void cd();
经典c语言实现二叉树,包括增删查改等操作
C语言数据结构单链表的增删查改
简单的C语言项目 包括了对文件的读写; 对数据的操作:如,增删查改; 光标的操作 等等。。
学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)学生管理系统 C语言 通过运行( 增删改查)
以下是本人完成的一个C语言建立链表并进行增删查改操作的程序,为方便学习,本人将整个程序分为头文件和主函数两部分: 1.头文件(函数部分) (1)初始化函数 #include #include typedef struct { int *head; int...
里面是链式栈的VC源代码,已经调试过,可以正常执行
自己写的小系统 运行起来还不错 1. 管理员设置密码:防止其他人乱改管理员所创建的信息。 2. 管理员对信息的创建和格式化:用于对通讯录的录入和全部删除 3. 普通用户对信息的查找:
用C语言简单的实现了对文件中数据的增加,查找,修改,和删除功能,综合利用光标,包括光标的移动,定位,和计算。 熟悉对文件的操作! IMTI luocheng
C语言课程设计,图书管理系统,大一,文件IO,增删查改.zip
C语言 双向循环链表,增删查改,判断回文,排序,论文,代码,自写可用,vs2013,课程设计,答辩
链表的增删查改等基本功能实现代码有注释
VS2008运行环境 c语言实现单链表增删改查操作 并输出到控制台上
C语言中指针也就是光标移动的函数是:fseek(指针名,偏移量,状态量); 如: FILE *fptr; Fseek(fptr,offset,SEEK_SET); 状态量分为:SEEK_SET(开始位置);SEEK_CUR(当前位置);SEEK_END(末尾位置)。
C语言结课设计-图书馆管理系统2.0(免积分下载),代码注释详细,系统功能如下所示 欢迎使用图书管理系统 图书管理 1,创建图书信息 2,删除图书 3,增添图书 4,按名称查询图书 5,按作者查询图书 6,创建读者...
由于SQLite3是基于C语言进行编程,因此可以直接在C语言代码中以函数调用和传参的形式操作数据库。在程序运行中,当需要操作数据库时,应用程序会打开数据库,若此时数据库不存在则会创建一个数据库。本代码实现了对...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程...基于C语言的学生一卡通信息管理系统源码+项目说明(高分课设)(包括增查改删等基本操作).zip