剑指offer知识点Java中位运算的5个常用技巧函数

Posted 征途黯然.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer知识点Java中位运算的5个常用技巧函数相关的知识,希望对你有一定的参考价值。

[1] 总览

  以下是可以提高代码逼格,而且比较好记的5个位运算技巧目录:
  1、整数n乘以2
  2、整数n乘以2的m次方
  3、判断数字n的奇偶
  4、不用临时变量交换整数n与整数m
  5、求两个整数n和m的平均值

[2] 整数n乘以2

  只适用于整数(负整数、0、正整数):

int f( int n )  //计算n*2 
     return n << 1 ;

浮点数的移位没有意义,因为它的bits都有特殊含义,移位则直接改变本质了。

[3] 整数n乘以2的m次方

  只适用于整数(负整数、0、正整数):

int f( int n, int m )  //计算n*(2^m)
     return n << m ;

[4] 判断整数n的奇偶

  只适用于整数(负整数、0、正整数):

boolean f( int n ) 
     return  (n  &  1 )  ==  1 ;

返回true是奇数,返回false是偶数。

[5] 不用临时变量交换整数n与整数m

  只适用于整数(负整数、0、正整数):

m  ^= n ;
n  ^= m ;
m  ^= n ;

首先有个原理需要知道:
若a ^ b = c, 则c ^ b = a, c ^ a = b。这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。

[6] 求两个整数n和m的平均值

  只适用于整数(负整数、0、正整数):

int f( int x,  int y ) 
    return  (x +y )  >>  1 ;

以上是关于剑指offer知识点Java中位运算的5个常用技巧函数的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer知识点Java中位运算的5个常用技巧函数

[剑指Offer] 62.数据流中的中位数

剑指OFFER 数据流中的中位数

剑指 Offer 41 数据流中的中位数(优先队列堆排序)

剑指offer62-数据流中位数

剑指offer62-数据流中位数