c语言 对8bit位数据的某位置1或 0

/*
对8bit位数据的某位置1或 0
例:00001010  对第二位制零 00001000
*/

#include<stdio.h>
#include<stdlib.h>

void bit_set_1_0(unsigned char *p_data,unsigned char position,int flag)
{
	if (position > 8||position<1 || p_data == NULL || flag<0 || flag>1)
	{
		printf("输入不合法\n");
		exit(-1);
	}

	if ((*p_data >> (position - 1) & 1 )!= flag)
	{
		*p_data = *p_data ^ (1 << (position-1));

	}
}

int main()
{
	unsigned char ch = 5;
	bit_set_1_0(&ch,6,1);
	printf("%d",ch);
	return 0;
}
时间: 2024-08-09 10:34:39

c语言 对8bit位数据的某位置1或 0的相关文章

C语言中的位拷贝与值拷贝浅谈(转载)

注:C语言实现的PHP变量的赋值过程中,就涉及到了 深拷贝和浅拷贝 位拷贝拷贝的是地址(也叫浅拷贝),而值拷贝则拷贝的是内容(深拷贝).深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝. 位拷贝,及"bitwise assignment"是指将一个对象的内存映像按位原封不动的复制给另一个对象,所谓值拷贝就是指,将原对象的值复制一份给新对象. 在用"bitwise assig

最受欢迎编程语言又是谁?C语言居首,大数据赢了

C语言占据榜首,但大数据类是最大赢家. IEEE Spectrum的第三次“最受欢迎编程语言”交互式排行榜新鲜出炉.因为不可能顾及到每一个程序员的想法,Spectrum使用多样化.可交互的的指标权重来评测每一种语言的现行使用情况. 数据记者Nick Diakopoulos从10个线上资源中选取了12个指标,这其中的每一个都能反映某一种编程语言在某一方面的受欢迎程度,加权这些指标就能得出一个排名. 何为“交互式”排名? 因为我们每个人都可能会看重不同的东西,比如大众最热衷在开源代码中使用什么语言?

2.1 C语言下的位运算

位运算符: 注:运算量只能为整型和字符型数据,不能是实数型的数据. 当进行&运算时:0&1=0:1&0=0:1&1=1:0&0=0: 当进行|运算时:0|1=1:1|0=1:1|1=1:0|0=0: 当进行^运算时:0^1=1;1^0=1;1^1=1;0^0=0; 异或的交换: a=a^b;b=b^a;a=a^b; 证明:因为a=a^b,b=b^a,a=a^b; 所以当计算前两个时可得:b=a. 计算第三个可得到的结果为:a=b. 当进行<<运算时:如a

关于c语言中的位运算。。。

位运算是一种针对二进制数的一种运算 位运算 共有六种 都有其对应得操作符号 &      (and)      位于 |        (or)         位或 ~      (not)        取反 ^       (xor)        异或 >>    (shr)    右移一位 <<    (shl)     左移一位 运算说明: === 1. and运算 === and运算通常用于二进制取位操作,例如一个数 and 1的结果就是取二进制的最末位.这可

8位数据的奇偶校验verilog程序_zt

利用Verilog语言实现对一个8位数据进行奇偶检验,具体方法如下,实现奇偶检验的算法就是,如果是偶校验,只要将该8位数据第一位和第二位进行异或,然后将得到的结果和第三位异或,依次下去,直到和第七位异或,这样得到的最后结果,就是偶校验位:如果是奇校验,将上面的偶校验位取反即可.下面的一段小程序就是实现该功能的代码. module modelsim_test (even_bit,odd_bit,a); input[7:0] a; output even_bit,odd_bit; assign ev

solidworks 2013 多国语言32 64位(带注册机)全功能

Autodesk.SoftImage.v2014.Linux64-ISO 1DVD Global.Energy.Mapper v14.1.4.2 Win32 1CD LMS.Imagine.LAB.Amesim.R12-ISO 1DVD LMS.Test.LAB.Rev12A.SL2-ISO 1DVD Remcom XFDTD 7.3.0.3 Win64 1CD Tekla.Structures.v19.0.WIN64-ISO 1DVD  ACD.Systems.Canvas.GIS.v14.0

黑马程序员——c语言学习心得——位运算符

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1 ,否则为0.参与运算的数以补码方式出现. 例如:9&

黑马程序员——c语言学习心得——位运算符a

黑马程序员——c语言学习心得——位运算符 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h>void func(int n, char  str[ ][5] ){int i;for(i = 0; i < n; i++)  printf("/nstr[%d] = %s/n"

深入理解计算机系统(2.2)---布尔代数以及C语言上的位运算

本文转载地址:http://www.cnblogs.com/zuoxiaolong/p/computer6.html 布尔代数上的位运算 布尔代数是一个数学知识体系,它在0和1的二进制值上演化而来的. 我们不需要去彻底的了解这个知识体系,但是里面定义了几种二进制的运算,却是我们在平时的编程过程当中也会遇到的.这四种运算分别是或.与.非和异或.下图展示了在布尔代数的知识体系中,对这四种运算的定义. 从左至右依次是非.与.或以及异或.这个图阐述的是针对一位二进制的运算结果,我们可以将其扩大到N位二进