Java开发那些事基础Java学习笔记

一个不让用加号的需求而引发的Java位运算详解

2018-03-06  本文已影响30人  天下无敌强

起因

基础的代码实现##

/**
 * @param a: An integer
 * @param b: An integer
 * @return: The sum of a and b
 */
public static int aplusb(int a, int b) {
   if(b == 0 )
       return a;
   int sum = a^b;
   int carry = (a&b)<<1;
   return aplusb(sum,carry);
}

十进制转二进制

原理

代码实现

 public class mapHashCodeTest {
     public static void main(String[] args) {
     String str = toBinary(8);
     System.out.println(str);
 }
 
 static String toBinary(int num) {
    String str = "";
    while (num != 0) {
     str = num % 2 + str;
     num = num / 2;
        }
    return str;
    }
 }

二进制转十进制

原理

位<<异或>>运算(^)

运算规则

位<<与>>运算符(&)

运算规则

例子

位<<或>>运算符(|)

运算规则

例子

位<<非>>运算符(~)

运算规则

Java中负数的表示##

参考资料

http://www.ruanyifeng.com/blog/2009/08/twos_complement.html

上一篇 下一篇

猜你喜欢

热点阅读