C语言学习历程——Training02位运算05
来源:互联网 发布:js实现上传文件的代码 编辑:程序博客网 时间:2024/05/20 07:32
5. 题目:输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b;
使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
分析:按照题意处理,具体代码中有解释
下面是代码实现:
/********************************************************************
输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b;
使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
********************************************************************/
#include <stdio.h>
int Change(int a, int b)
{
int i = 0;
for (i = 0; i < 32; i++)
{
if ((i == 0) || (i == 31))
{
b += (((a >> i) & 1) ^ 0) << i; //开头和结尾单独处理
}
else
{
b += (((a >> (i + 1)) & 1) ^ ((a >> (i - 1)) & 1)) << i; //第i位的结果等于该位左右两个位异或的结果
}
}
return b;
}
int main()
{
int a = 0;
int b = 0;
printf ("please input a integer:");
scanf ("%d", &a);
b = Change(a , b);
printf ("b = %d\n", b);
return 0;
}
输入一个32位的整数a,使用按位异或^运算,生成一个新的32位整数b;
使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果
********************************************************************/
#include <stdio.h>
int Change(int a, int b)
{
int i = 0;
for (i = 0; i < 32; i++)
{
if ((i == 0) || (i == 31))
{
b += (((a >> i) & 1) ^ 0) << i; //开头和结尾单独处理
}
else
{
b += (((a >> (i + 1)) & 1) ^ ((a >> (i - 1)) & 1)) << i; //第i位的结果等于该位左右两个位异或的结果
}
}
return b;
}
int main()
{
int a = 0;
int b = 0;
printf ("please input a integer:");
scanf ("%d", &a);
b = Change(a , b);
printf ("b = %d\n", b);
return 0;
}
0 0
- C语言学习历程——Training02位运算05
- C语言学习历程——Training02位运算01
- C语言学习历程——Training02位运算02
- C语言学习历程——Training02位运算03
- C语言学习历程——Training02位运算04
- C语言学习历程——Training04字符串训练05
- C语言——位运算
- C语言—位运算、char、数组
- C语言位运算的学习
- C语言学习笔记11--位运算
- C语言学习笔记 位运算
- C语言位运算
- C语言位运算
- C语言位运算
- c语言位运算
- C语言位运算
- c语言位运算
- C语言位运算
- Memory Network简单理解
- 无需启动项目测试spring RunWith ContextConfiguration
- 2017-04-28 DBA日记,各操作系统OS系统日志查看方法
- Android studio打包APK Android Studio
- 系统恢复技术
- C语言学习历程——Training02位运算05
- 李航博士的《浅谈我对机器学习的理解》--文章部分解读
- python学习(一)
- 代码猴子眼中的爱恋
- Ombrophobic Bovines POJ
- sleep() 和 wait() 有什么区别
- bp
- 山东省第六届ACM大学生程序设计竞赛 训练总结 [(7+1)/12] 待补
- luogu P1182 数列分段Section II