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

 

目录
相关文章
|
6月前
|
存储 算法 Java
实现一个函数 splice(int[] a, int b[], int n, int m) 将数组 b 插入到数组 a 的第 n 个位置上去,并将其后面的元素后移 m 个位置,同时更新数组 a 的长度
实现一个函数 splice(int[] a, int b[], int n, int m) 将数组 b 插入到数组 a 的第 n 个位置上去,并将其后面的元素后移 m 个位置,同时更新数组 a 的长度
38 0
|
6月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
有一个整数数组,长度为9,数组里的值是多少不清楚,但是知道数组中有8个值是相等,其中一个小于其他8个值,目前有一个标准函数,compare(int[] a, int[] b),返回0相等1大于
有一个整数数组,长度为9,数组里的值是多少不清楚,但是知道数组中有8个值是相等,其中一个小于其他8个值,目前有一个标准函数,compare(int[] a, int[] b),返回0相等1大于
110 5
|
算法
int转字符串实现方法
int转字符串实现方法
139 0
int转字符串实现方法
编写一个函数reverse_string(char*string),实现将参数字符串中的倒叙 如 char arr[]=“abcdef“变为“fedcba“
编写一个函数reverse_string(char*string),实现将参数字符串中的倒叙 如 char arr[]=“abcdef“变为“fedcba“
166 0
编写一个函数reverse_string(char*string),实现将参数字符串中的倒叙 如 char arr[]=“abcdef“变为“fedcba“
|
C语言
【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )
【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )
157 0
【C 语言】数组 ( 多维数组做函数形参退化为指针过程 | int array[2][3] -> int array[][3] -> int (*array)[3] )
|
人工智能 BI
两个字符串 char* a, char* b,输出b在a中的位置次序。
/** 题目: 两个字符串 char* a, char* b,输出b在a中的位置次序。 void output_postion(const char* a, const char* b); 如:a = "abdbcc" b = "abc" ...
1056 0