这个函数的返回 值value的二进制位模式从左到右翻转后的值。

这一种是我自己想出来的方法,发现对二进制还是不太熟悉。
#include<stdio.h>
#include<stdlib.h>
unsigned int  reverse_bit(unsigned int value)
{
 unsigned sum=0;
 int i=0;
 for(i=0;i<32;i++)
 {
  sum+=((value>>i)&1)<<(31-i);
 }
 return sum;
}
int main()
{
  unsigned int n;
  scanf("%d",&n);
  unsigned c=reverse_bit(n);
  printf("%u",c);
  system("pause");
  return 0;
}

第二种:

#include<stdio.h>
#include<stdlib.h>
unsigned int  reverse_bit(unsigned int value)
{
 int i;
 unsigned n=0;
 for(i=0;i<32;i++)
 {
  n=n<<1;
  n|=(value>>i)&1;
 }
 return n;
}
int main()
{
  unsigned int n;
     scanf("%d",&n);
     unsigned c=reverse_bit(n);
     printf("%u",c);
     system("pause");
     return 0;
}

时间: 2024-11-05 01:22:36

这个函数的返回 值value的二进制位模式从左到右翻转后的值。的相关文章

编写函数返回值value的二进制模式从左到右翻转后的值

编写函数: unsigned int  reverse_bit(unsigned int value); 这个函数的返回值value的二进制位模式从左到右翻转后的值. 例如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832 观察输出的结果是将输入的数的二进制逆序排列的值. 代码如下: #include<

C语言编程 输出一个数二进制位模式从左到右翻转后的值

eg:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832 代码核心思想是将原来二进制序列最后一位看作反转后第一位,将原来二进制序列第一位看作反转后最后一位进行重新计算 比如15的2进制为 --0000 1111计算方法为12^1 + 12^2 + 12^3 + 12^4反转后为1111 0000--计算方法为12^3

二进制位模式从左到右翻转后的值

#include <stdio.h> #include <math.h> unsigned int  reverse_bit(unsigned int value) {  int i = 0, sum = 0;  int ret;  for (i = 0; i < 32; i++)  {   ret = value & 1;      sum = sum + (ret*pow(2, (31 - i)));   value = value >> 1;  }

二进制位模式从左到右翻转(25~2550136832)

1.编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值是value的二进制位模式从左到右翻转后的值.如:在32位机器上25这个值包含下列各位:00000000000000000000000000011001翻转后:(2550136832)10011000000000000000000000000000程序结果返回:2550136832 #include<stdio.h> #include<math.h> unsign

写一个函数实现整数的二进制位模式从左到右翻转

如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832 思路:第1位逆转到了第32位->后整数的值为2^31(2的31次方)     第i位逆转到了第32-i位->后整数的值为2^(32-i)(2的(32-i)次方)*(n>>(i-1))&1 累加每一位逆转之后的值-->二进制

翻转一个数的二进制后的值

编写函数: unsigned int  reverse_bit(unsigned int value); 这个函数的返回 值value的二进制位模式从左到右翻转后的值. 如: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832 unsigned int  reverse_bit1(unsigned int 

第二天,函数的返回值return

首先是前一天问题的答案 第一题: <!DOCTYPE html> <html lang="en"> <heda> <meta charset="UTF-8">  <title></title> </head> <body> </body> </html> 第二题: 结构-HTML 表现-CSS 行为-JavaScript 第三题 <!DOCT

测试函数用Return 返回值和用函数名返回值的区别

'*************************************************************************'**模 块 名:工程1 - Form1'**说    明:蓝凤凰设计商城 浴火凤凰-郭卫 | 蓝凤凰-魔灵 | 郭卫-icecept'**创 建 人:浴火凤凰-郭卫'**日    期:2015年10月19日  21:53:17'**修 改 人:浴火凤凰-郭卫'**日    期:'**描    述:QQ:493405998 | 微信\旺旺:icece

赋值运算符函数的返回值类型详解

在c++赋值运算符函数的学习中,对于返回值类型的问题,一直非常费解,今天彻底总结一些每种不同返回值类型的结果: 1.当返回值为空时: <span style="font-size:14px;">void hasptr::operator=(const hasptr& s)</span> 这个时候如果只有一个'='(a = b)运算那就没问题,但是如果存在'='(a = b = c)的链式操作时,编译器就会报错 我们看:a = b = c: 程序会先运行