位操作习题1

来源:互联网 发布:网络技术培训 编辑:程序博客网 时间:2024/06/05 05:32
/*位操作运算练习将某无符号整型数据的第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;}
/*通过位运算将整型数据的某些位清零通过位运算将整型数据的某些位置1unsigned 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 3before:0x256cleanbits:0x250before:0x256setbits:0x25fetbits(unsigned intn, intstart, intend)




0 0
原创粉丝点击