位操作
来源:互联网 发布:java基础代码 编辑:程序博客网 时间:2024/05/16 12:06
//只能用于整型数据,float,double不可以
/* bit_get */
int bit_get(constunsigned char *bits,int pos)
{
unsigned char mask;
int i;
/* Set a mask for the bit to get. */
mask = 0x80;
for(i = 0; i< (pos % 8); i++)
mask = mask >> 1;
/* Get the bit. */
return(((mask & bits[(int)(pos/ 8)]) == mask) ? 1 : 0);
}
**********************************************************************************
追加:
比如随机数:
time_t ti; srand((unsignedint)time(&ti));
int num=rand()%10; //表示的就是num取值范围是0-9
同理
int loc=pos%8的取值范围就是0-7,也就是char是一个字节,loc表示的是其中0-7上的某一位
而bits[pos/8]是针对于实参为bits=(char*)(&int)这种类型,同时pos=10,也就是说针对第二个字节bits[1]
和mask进行运算
组和个的问题:
如果以“个”为索引index,则index/8则表示8个一组,index处于第几组里面
index%8则表示index在一组(这个组并不一定是第一个组,是index/8组)当中的第几个
***********************************************************************************
/* bit_set */
void bit_set(unsigned char *bits, int pos, int state)
{
unsigned char mask;
int i;
/* Set a mask for the bit to set. */
mask = 0x80;
for(1= 0; i < (pos % 8); i++)
mask = mask >> 1;
/* Set the bit. */
if(state)
bits[pos / 8]= bits[pos/ 8] | mask;
else
bits[pos / 8]= bits[pos/ B]& (~mask);
return;
}
{
// 0xAAAAAAAA,0x55555555分别是以“1位”为单位提取奇偶位
n = ((n & 0xAAAAAAAA ) >> 1 ) + (n & 0x55555555 );
// 0xCCCCCCCC,0x33333333分别是以“2位”为单位提取奇偶位
n = ((n & 0xCCCCCCCC ) >> 2 ) + (n & 0x33333333 );
// 0xF0F0F0F0,0x0F0F0F0F分别是以“4位”为单位提取奇偶位
n = ((n & 0xF0F0F0F0 ) >> 4 ) + (n & 0x0F0F0F0F );
// 0xFF00FF00,0x00FF00FF分别是以“8位”为单位提取奇偶位
n = ((n & 0xFF00FF00 ) >> 8 ) + (n & 0x00FF00FF );
// 0xFFFF0000,0x0000FFFF分别是以“16位”为单位提取奇偶位
n = ((n & 0xFFFF0000 ) >> 16 ) + (n & 0x0000FFFF );
return n;
}
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 数据库视频总结 一
- [Android6.0][RK3399] TypeC 基础知识
- 【牛客】最小的k个数
- 【转载】SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Eclipse中安装SVN插件
- 位操作
- bash配置文件/etc/profile,/etc/bashrc,~/.bash_profile,~/.bashrc详解及修改PATH环境变量
- 50 种系统免遭黑客侵袭的方法 [2017 年版]
- jsp中page的各个属性介绍
- android改进布局性能
- Android中Vitamio全屏播放
- 系统间通信—信息格式
- 秒针机器学习面试
- Unity 本地文件夹 目录查找,判断有否 没有创建 有删除。