Reverse bits - 按位反转一个int型数字

简介: Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented in binary as 00000010100101000001111010011100),  return 964176192 (represented in binary as00111001011110000010100101000000).   把一个无符号int数字,按二进制位反转过来 通过移位操作,一位一位来处理。

 

Reverse bits of a given 32 bits unsigned integer.

For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), 

return 964176192 (represented in binary as00111001011110000010100101000000).

 

把一个无符号int数字,按二进制位反转过来

通过移位操作,一位一位来处理。目的是反转,所以先处理最右位。最右位(末端)一个一个地往result的左边推

public class ReverseBits {

   public static void main(String args[]) {
       System.out.print(solution(43261596));

   }

   // &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000
   // 按位反转一个int
   private static int solution(int input) {
       int result = 0;
       for (int i = 0; i < 32; i++) {      // 一共32位
           if (((input >> i) & 1) == 1) {  // 如果移位后最右位为1
               int j = 31 - i;             // 判断当前是第几位,并换算成反转后的位数
               result |= 1 << j;           // 得知是反转后第几位,存入结果result中
           }
       }
       return result;
   }
}

 

输出:

964176192

 

目录
相关文章
|
关系型数据库 PostgreSQL
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
2343 0
|
4月前
|
存储 C语言
使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小
【10月更文挑战第13天】使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。
144 1
|
存储 C语言
C 语言实例 - 计算 int, float, double 和 char 字节大小
C 语言实例 - 计算 int, float, double 和 char 字节大小。
113 1
|
9月前
|
存储 C语言
计算 int, float, double 和 char 字节大小
计算 int, float, double 和 char 字节大小。
105 3
|
9月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
对int,char,float,double进行求和操作
对int,char,float,double进行求和操作
221 0
char、int 、long int、float、double的存储空间长度比较(例题讲解)
char、int 、long int、float、double的存储空间长度比较(例题讲解)
265 0
char、int 、long int、float、double的存储空间长度比较(例题讲解)
|
C语言 Python
C语言:定义一个计算两个整数的和的函数int sum(int a,int b),在主函数中输入两个整数x和y,调用sum(x,y)输出x+y的和。
C语言:定义一个计算两个整数的和的函数int sum(int a,int b),在主函数中输入两个整数x和y,调用sum(x,y)输出x+y的和。
1327 0
C语言:定义一个计算两个整数的和的函数int sum(int a,int b),在主函数中输入两个整数x和y,调用sum(x,y)输出x+y的和。
HDOJ 1266 Reverse Number(数字反向输出题)
HDOJ 1266 Reverse Number(数字反向输出题)
128 0