一、数据大小
首先记忆下Java各个数据所占的内存大小:
boolen:1个字节
int:4个字节
float:4个字节
double:8个字节
char:2个字节
byte:1个字节
short:2个字节
long:8个字节
二、反转二进制数字
假设需要倒转的数字是n
倒转十进制整数:
ans=ans*10+n%10
n/=10
当n是正数的时候,情况是相同的:
ans=ans*2+n%2
n/=2
或者使用位运算:
ans=(ans<<1)|(n&1)
n>>1
注意处理0的特殊情况,比如:
00110倒转后是01100而不是011
这种情况下加个循环就可以解决:
public class Solution {
public int reverseBits(int n) {
int res=0;
for(int i=0;i<32;i++){
res=(res<<1)|(n&1);
n>>=1;
}
return res;
}
}
要注意n为负数的情况,上面的位运算还是可以使用的,只是
ans=ans*2+n%2
n/=2
这样的运算不能使用了,因为负数做除法会出现问题。