-
Training2:位操作训练
- 题目:请编写一个c函数,该函数给出一个字节中被置为1的位的个数
-
#include<stdio.h> int main() { char a; int i,mask,count; printf("Please enter a char:\n"); scanf("%c",&a); mask = 1; //掩码00000001 count = 0; for(i=0;i<8;i++) //一个字节8bit { if((mask & a) != 0) //与运算判断是否为1 { count++; } mask = mask << 1; //掩码左移一位判断原码下一位 } printf("%d\n",count); }
- 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位.
-
#include <stdio.h> //题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位. void fun(int n, int p1, int p2) { int i; if (p1 > p2) { int tmp; tmp = p2; p2 = p1; p1 = tmp; }//对p1/p2排序,让p1<p2 for (i = p2; i >= p1; i--) { int tmp = 0; tmp = (n >> (i - 1)) & 1; if (tmp == 1) { printf("1"); } else { printf("0"); } } } int main() { int n, p1, p2; printf("请输入n,p1,p2,用空格隔开\n"); scanf("%d,", &n); scanf("%d,", &p1); scanf("%d,", &p2); fun(n, p1, p2); printf("\n"); return 0; }
- 题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),将该整数的二进制表示方法中从右端开始的p1到p2位取反后输出
-
#include <stdio.h> //题目:输入一个整数a,再输入两个整数p1,p2(p1,p2<32),输出该整数的二进制表示方法中从右端开始的p1到p2位. void fun(int n, int p1, int p2) { int i; if (p1 > p2) { int tmp; tmp = p2; p2 = p1; p1 = tmp; }//对p1/p2排序,让p1<p2 for (i = p2; i >= p1; i--) { int tmp = 0; tmp = (n >> (i - 1)) & 1; if (tmp == 1) { printf("0"); } else { printf("1"); } } } int main() { int n, p1, p2; printf("请输入n,p1,p2,用空格隔开\n"); scanf("%d,", &n); scanf("%d,", &p1); scanf("%d,", &p2); fun(n, p1, p2); printf("\n"); return 0; }
结果
- 题目:输入一个整数a,再输入两个整数p(p<32),v(0|1),将该整数a的p位设置为v,输出修改后的该整数的二进制表示.
- 题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
-
提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;
-
#include<stdio.h> int main() { int i=0; int a=0; int b=30; int temp=0; printf("Please enter number:"); scanf("%d",&a); printf("The new value generated is:\n"); if(a<0) { a=-a; printf("1"); temp=1^(a>>29&1); printf("%c",(temp==1)?'1':'0'); b--; } else { printf("0"); } for(i=b;i>=1;i--) { temp=(a>>(i+1)&1)^(a>>(i-1)&1); printf("%c",(temp==1)?'1':'0'); } temp=a&1; printf("%c",(temp==1)?'1':'0'); printf("\n"); }
0527作业
于 2023-05-27 21:53:12 首次发布