将指定位 置1 或 置0

#include <stdio.h>

/*
 * 把bit_number指定的位置设置为1
 * bit_number 0~31
 * */
int make_one(int value,int bit_number)
{
	//return value = value | 1 << bit_number;
	return value |= 1 << bit_number;
}

/*
 * 把bit_number指定的位置设置为0
 * bit_number 0~31
 * */
int make_zero(int value,int bit_number)
{
	//return value = value & ~(1 << bit_number);
	return value &= ~(1 << bit_number);
}

int main()
{
	int i,bit;
	scanf("%d",&i);
	scanf("%d",&bit);
	int res = make_one(i,bit);
	printf("%d\n",res);

	res = make_zero(i,bit);
	printf("%d\n",res);
}


 

好的,我来为您介绍如何使用运算处理二进制数据。以下是一个C语言程序,展示了如何按二进制输出unsigned char类型的数据,以及如何对指定进行取反、01操作: ```c #include <stdio.h> // 函数声明 void printBinary(unsigned char num); unsigned char toggleBit(unsigned char num, int position); unsigned char setBitTo0(unsigned char num, int position); unsigned char setBitTo1(unsigned char num, int position); int main() { unsigned char data = 0b10110011; // 初始数据 printf("原始数据: "); printBinary(data); printf("\n"); // 取反第4 data = toggleBit(data, 4); printf("取反第4后: "); printBinary(data); printf("\n"); // 将第2位置0 data = setBitTo0(data, 2); printf("将第2位置0后: "); printBinary(data); printf("\n"); // 将第6位置1 data = setBitTo1(data, 6); printf("将第6位置1后: "); printBinary(data); printf("\n"); return 0; } // 按二进制输出函数 void printBinary(unsigned char num) { for (int i = 7; i >= 0; i--) { printf("%d", (num >> i) & 1); } } // 取反指定函数 unsigned char toggleBit(unsigned char num, int position) { return num ^ (1 << position); } // 将指定位置0函数 unsigned char setBitTo0(unsigned char num, int position) { return num & ~(1 << position); } // 将指定位置1函数 unsigned char setBitTo1(unsigned char num, int position) { return num | (1 << position); } ``` 这个程序演示了以下操作: 1. 按二进制输出: `printBinary` 函数使用移和按与操作来逐输出数字的二进制表示。 2. 取反指定: `toggleBit` 函数使用异操作(^)来切换指定的值。 3. 将指定位置0: `setBitTo0` 函数使用按与操作(&)和取反操作(~)来清除指定的值。 4. 将指定位置1: `setBitTo1` 函数使用按操作(|)来设指定的值。 程序首先打印原始数据的二进制表示,然后依次执行取反、01操作,每次操作后都打印结果。 这个示例展示了如何使用运算来精确控制数据的每一,这在底层编程中非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值