位操作训练
来源:互联网 发布:java包名命名有空格 编辑:程序博客网 时间:2024/04/29 13:47
1、题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数
#include <stdio.h>int int2bin(int num){ int i; int count = 0; for( i = 0; i < 8; i++) { if( num & 1 ==1) { count++; } num=num >> 1; } return count;}int main(){ int num; int count; printf("please input a number:"); scanf("%d", &num); count=int2bin(num); printf("%d\n",count); return 0;}
2、 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
#include <stdio.h>void int2bin( int num, int p1, int p2){ int i; int bin[32]; for( i = 0; i < 32; i++) { if( num & 1 == 1) { bin[i] = 1; } else { bin[i] = 0; } num = num >> 1; } for( i= p1; i <= p2; i++) { printf("%d", bin[i-1]); } printf("\n");}int main(){ int num; int p1; int p2; int *p; printf("please input a number:"); scanf("%d", &num); printf("please input p1,p2(p1<p2):"); scanf("%d %d", &p1, &p2); int2bin(num, p1, p2); return 0;}
3、 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
#include <stdio.h>void int2bin( int num, int p1, int p2){ int i; int bin[32]; for( i = 0; i < 32; i++) { if( num & 1 == 1) { bin[i] = 0; } else { bin[i] = 1; } num = num >> 1; } for( i= p1; i <= p2; i++) { printf("%d", bin[i-1]); } printf("\n");}int main(){ int num; int p1; int p2; int *p; printf("please input a number:"); scanf("%d", &num); printf("please input p1,p2(p1<p2<32):"); scanf("%d %d", &p1, &p2); int2bin(num, p1, p2); return 0;}
4、 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示
#include <stdio.h>void int2bin( int num, int p, int v){ int i; int bin[32]; for( i = 0; i < 32; i++) { if( num & 1 == 1) { bin[i] = 1; } else { bin[i] = 0; } num = num >> 1; } bin[p-1] = v; for( i= 31; i >= 0; i--) { printf("%d", bin[i]); if( i % 4 == 0) { printf(" "); } } printf("\n");}int main(){ int num; int p; int v; printf("please input a number:"); scanf("%d", &num); printf("please input p(p<32):"); scanf("%d", &p); printf("please input v(0|1):"); scanf("%d", &v); int2bin(num, p, v); return 0;}
5、题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
提示:0 ^ 0 = 0; 1^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
#include <stdio.h>int int2bin( int a){ int i; int b = 0; for( i = 0; i < 32; i++) { if( i == 0 || i == 31) { b = b + (( a >> i) & 1); } else { b = b +(( ((a >> (i - 1)) & 1) ^((a >> (i + 1)) & 1))<<i); } } return b; }int main(){ int a; printf("please input a :"); scanf("%d", &a); printf("%d\n",int2bin(a)); return 0;}
0 0
- Training2:位操作训练
- 位操作训练
- 位操作训练
- Training2:位操作训练
- 位操作训练
- 位操作训练
- 位操作训练
- 位操作训练
- Training2:位操作训练
- Training2:位操作训练
- Training2:位操作训练
- 位操作训练
- 积跬步至千里——算法强化训练(4)位操作的几个实例
- 位操作
- 位操作
- 位操作
- 位操作
- 位操作
- 在VB编程中,如何实现加入声音
- 数据存储之Realm数据库
- 数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案
- Raspberry Pi 更新软件源
- 贪吃蛇小游戏2d
- 位操作训练
- 作业感悟
- Java基础学习总结(10)—— Cookie/Session机制详解
- VB+语音识别软件
- Spark算子使用示例
- 线程之“生产者消费者”
- 关于PT/DC 中查看固定值的方法
- 单链表的逆转
- 树链剖分_MODLE