位操作习题1

本文介绍如何使用位操作来实现特定的二进制位的设置、清除及取反等操作,并提供具体的C语言代码实例,包括如何针对指定范围内的位进行操作。
/*
位操作运算练习
将某无符号整型数据的第0-3位清零
将某无符号整型数据的第4-7位置1
将某无符号整型数据的第0-3位取反
*/

#include <stdio.h>

int main(void)
{
	unsigned n;
	scanf("%x", &n);
	printf("0-3 clear:0x%x\n", n & 0xfffffff0);
	printf("4-7 set 1:0x%x\n", n | 0x000000f0);
	printf("0-3 set ~:0x%x\n", n ^ 0x0000000f);

	return 0;
}
//判断某个数是奇数还是偶数

#include <stdio.h>

int main(void)
{
	unsigned n,tmp;
	scanf("%x", &n);
	tmp = n & 0x00000001;
	if(tmp == 0x01){
		printf("odd\n");
	}else printf("even\n");
	


	return 0;
}
/*
通过位运算将整型数据的某些位清零
通过位运算将整型数据的某些位置1
unsigned cleanbits(unsigned int n, int start, int end)
unsigned setbits(unsigned int n, int start, int end)

*/

#include <stdio.h>

unsigned cleanbits(unsigned n, int start, int end)
{	
	unsigned tmp;
	tmp = n &  ~( ~( (~0) << (end - start + 1) ) << start );
	printf("before:0x%x\ncleanbits:0x%x\n", n, tmp);
	return 0;
}
unsigned setbits(unsigned n, int start, int end)
{	
	unsigned tmp;
	tmp = n | ~( (~0) << (end - start + 1) ) << start;
	printf("before:0x%x\nsetbits:0x%x\n", n, tmp);
	return 0;
}


int main(void)
{
	unsigned n;
	int start, end;
	printf("输入整形数据n,起始bits位start的值,结束bits位end的值\n");
	scanf("%x%d%d", &n, &start, &end);
	cleanbits(n, start, end);
	setbits(n, start, end);
	return 0;
}<pre name="code" class="cpp">
输入整形数据n,起始bits位start的值,结束bits位end的值
256 0 3
before:0x256
cleanbits:0x250
before:0x256
setbits:0x25f
etbits(unsigned intn, intstart, intend)





评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值