实现一个对8bit数据指定某一位置0或1

#include<stdio.h>

void bit_set(unsigned char *p_date, unsigned char position, int flag)
{
	if (flag == 1)
	{
		*p_date |= (1 << (position - 1));//0000 0010或0000 0001
	}                                   // 0000 0011
	else if (flag = 0)
	{
		*p_date &= ~(1 << (position - 1));//0000 0010&1111 1110
	}                                    // 0000 0010

}

int main()
{
	unsigned char val = 2;
	bit_set(&val, 1, 0);
	printf("%d\n", val);
	getchar();
	return 0;
}

时间: 2024-10-26 19:13:15

实现一个对8bit数据指定某一位置0或1的相关文章

【C语言】请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变

/*请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变. 函数原型:void bit_set(unsigned char *p_date,unsigned char position,int flag). 函数参数说明:p_date是指定数据源,position是指定位(1~8),flag是置0或置1. */ #include <stdio.h> void bit_set(unsigned char *p_dat

【c语言】实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变

// 实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char position, int flag) { unsigned c; unsigned char a = 1; a = a << (position - 1); if (flag == 1) { *p_data = *p_dat

使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置)

原文:使用Socket通信实现Silverlight客户端实时数据的获取(模拟GPS数据,地图实时位置) 在上一篇中说到了Silverlight下的Socket通信,在最后的时候说到本篇将会结合地图.下面就来看看本文实现的功能: Silverlight 与服务器利用Socket通讯,实时从服务器获取数据(本文中的数据是地理坐标),由于没有GPS,所以本文在服务器写了一个构造新坐标的函数(本文是一个三角函数),然后利用Timer组件,实时调用,得到新的坐标,并将新的坐标发送给客户端,客户端接收到发

《数据结构、算法与应用》8.(顺序查找数组中第一个出现指定元素的位置)

最近在读<数据结构.算法与应用>这本书,把书上的习题总结一下,用自己的方法来实现了这些题,可能在效率,编码等方面存在着很多的问题,也可能是错误的实现,如果大家在看这本书的时候有更优更好的方法来实现,还请大家多多留言交流多多指正,谢谢 8. 从左至右检查数组a[0:n-1]中的元素,以查找雨x相等的那些元素.如果找到一个元素与x相等,则函数返回x第一次出现所在的位置.如果在数组中没有找到这样的元素,函数则返回-1. // // main.cpp // Test_08 // // Created

将mongodb 数据指定字段导出,然后指定字段导入mysql 实例 及相关问题解决

需求:将mongodb 数据指定字段导出,然后再指定字段导入mysql  表中 直接上图吧, 最后 会将遇到几个问题及解决方案贴出,以便遇到类似问题可以迅速解决(期间所用命令具体用法不在本文详解之内) 将mongodb 数据指定字段导出,所用命令Mongoexport ,具体查阅官方文档: 导出指定二级字段 Mongodb /opt/mongodb/bin/mongoexport  --host yourip  --port yourport   -d app_form -c applicati

C#中使用SelectionStart属性指定输入框光标位置

今天工作中遇到一个小BUG需要修改,需求为在文本框输入的过程中,如果数字是以0开头则自动消除0 如输入012,则显示12 很容易想到在textbox的text changed事件中判断,如果text是startwith 0,那么TrimStart('0') 但实际调试时发现,0是是去掉了,但光标会保留在最前面,那么用户依次输入012三个数字,界面会显示为21 查看资料后发现c#中控件属性SelectionStart可以指定光标位置,那么只需要在处理TrimStart('0')后加一句 textB

【Excle数据透视表】如何移动数据透视表的位置

数据透视表创建完成了,现在需要将它移动到D5位置,如何移动呢? 解决办法 通过"移动数据透视表"功能实现数据透视表的位置移动 步骤1 单击数据透视表任意单元格→数据透视表工具→分析→"操作"组中的"移动数据透视表"按钮 步骤2 修改想移动的目标位置 单击确定即可完成

使用Hbuilder开发IOS应用上架审核提示请指定用户在位置许可模式警报中使用位置的预定用途。

使用Hbuilder开发IOS应用时,遇到上架App被拒的问题,被拒原因: 你的应用程序使用位置服务,但并没有按照iOS人机界面指南中的要求,在位置模式警报中阐明它的用途. 要解决此问题,请指定用户在位置许可模式警报中使用位置的预定用途. 在查看Hbuilder官方社区找到解决方案. 关于描述的问题,在manifest.json文件中,plus->distribute->apple下,新增plistcmds节点. "plistcmds":[ "Set :NSCam

C51 一个非常有用的位操作 --- 其中一位置 0 其它位不变

C51 一个非常有用的位操作 --- 其中一位置 0 其它不变 C51 中经常操作位,以下方法就非常方便,来自 1 s &= ~(1 << j) /* 将变量s的第j位置成0,其余位不变 */ 活学活用 // 开始 AD 转换 ADCON0 |= ADCEN; // 等待 AD 转换完成 while(!(ADCON0 & ADCI)); // 软件清除 AD 中断标志 ADCON0 &= ~ADCI; c的按位取反运算符(~) http://blog.51cto.com