左右翻转二进制数==》繁琐与精简
2016-05-29 16:53
274 查看
实现:
//00000000000000000000000000011001
//10011000000000000000000000000000
这种翻转
方法一和方法二思路大致一样,可以方法二却十分麻烦。
方法一(简单)
#include<stdio.h>
#include<math.h>
unsigned int reverse_bit(unsigned int value)
{
int i = 0;
unsigned int Value ;
unsigned int num = 0;
for (i = 1; i <= 32; i++)
{
Value = value;
int b = ((value%2)&&1);
num = num + b*(pow(2, (32 - i)));
value=Value >> 1;
}
return num;
}
int main()
{
unsigned int number = 25;
printf("%u", reverse_bit(number));
}
方法二(思想简单但写的十分复杂,我都不知道我咋想出来的)
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1703666
//00000000000000000000000000011001
//10011000000000000000000000000000
这种翻转
方法一和方法二思路大致一样,可以方法二却十分麻烦。
方法一(简单)
#include<stdio.h>
#include<math.h>
unsigned int reverse_bit(unsigned int value)
{
int i = 0;
unsigned int Value ;
unsigned int num = 0;
for (i = 1; i <= 32; i++)
{
Value = value;
int b = ((value%2)&&1);
num = num + b*(pow(2, (32 - i)));
value=Value >> 1;
}
return num;
}
int main()
{
unsigned int number = 25;
printf("%u", reverse_bit(number));
}
方法二(思想简单但写的十分复杂,我都不知道我咋想出来的)
#include<stdio.h> #include<math.h> unsigned int zhishu(int x, int cishu) { unsigned int num = pow(2, cishu); return (x*num); } int num_sing(int max) { if (max % 2 == 0) { return 0; } else { return 1; } } unsigned int fzsign(unsigned int a) { unsigned int num = 0; int sing = num_sing(a); int cishu = 0 + sing; unsigned int tmp = a; unsigned int b = 0; while (a != sing) { a = a / 2; cishu++; } /*printf("%d\n", cishu);*/ int sings = num_sing(tmp); int tmp2 = cishu; cishu = cishu - 1; while (tmp != sings) { b = tmp % 2; tmp = tmp / 2; num = num + zhishu(b, cishu); cishu--; } num = num + sings; num = num << (32 - tmp2); return num; } int main() { unsigned int a = 25; unsigned int num=fzsign(a); printf("%u", num); } 法二像不像大杂烩!!!
本文出自 “痕迹” 博客,请务必保留此出处http://wpfbcr.blog.51cto.com/10696766/1703666
相关文章推荐
- Ubuntu下tomcat无法启动解决办法
- 不使用(a + b) / 2这种方式,求两个数的平均值
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- 宏在使用过程余函数的区别<1>
- 输出一个字符串遇见‘ \0 ’停止并返回字符串字符的个数
- 求两个数的最大公约数
- HTTP协议总结
- sizeof ()求指针和数组时的不同
- 05章项目: QuickHit快速击键
- 9.6. MySQL中保留字的处理
- LeetCode-78.Subsets
- JavaScript中的Number类型、String类型、Global对象、Math对象总结
- yum添加163源
- 《剑指offer》——二维数组中的查找
- nyoj 545 第五届河南省程序设计大赛F
- 算法思想系列--分治策略(Divide-Conquer-Combine)(待补充)
- 算术表达式的计算(栈的应用)
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round]B Finding Team Member
- ReactiveCocoa操作方法(过滤,秩序,时间,重复)
- c++流常见操作