美文网首页
android 位运算

android 位运算

作者: 我是划水的 | 来源:发表于2020-09-06 23:21 被阅读0次

public static void main(String[] args) {

    /* 符号为:最高位同时表示图号,0为正数,1为负数 */ 

        /* 

            1、二进制转换为十进制

            二进制转换为10进制的规律为: 每位的值 * 2的(当前位-1次方)

            例如:

                00000001 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0  = 1

                00000010 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0  = 2

            2、二进制的符号位:

                最高位表示符号位,0表示正数  , 1表示负数

            3、将二进制负数转换为十进制:先对该二进制数取反,然后加1,再转换为十进制,然后在前面加上负号

                例如: 10101011 最高位为1,所以为负数

                  第一步:取反: 01010100

                  第二步:加1 : 01010101

                  第三步:转换为10进制:85

                  第四步:加上负号: -85

                  所以      10101011 转换为十进制为 -85

            4、将十进制负数转换为二进制:先得到该十进制负数的绝对值,然后转换为二进制,然后将该二进制取反,然后加1

                例如:-85

                第一步:得到绝对值 85

                第二步:转换为二进制:01010101

                第二步:取反:                10101010

                第三步:加1:                10101011

                所以,-85转换为二进制为  10101011

        */ 

        /*

        ~ ‘非’ 运算符是将目标数的进制去反,即0变成1 ,1变成0

        2的二进制码为 00000010 , 它取反为11111101 ,可见取反后结果为负数(二进制负数转换为十进制的步骤为:将二进制去反,然后+1)

        将 11111101 转换为10进制 ,第一步去反 得到 00000010 然后 加1 得到 00000011 ,得到的结果为3 ,然后在前面加上负号就可以了

        所以结果为-3

        */ 

        System.out.println(~2); 

        /*

          ^ 异或 ,计算方式为:两个二进制数的位相同则为0 不同则为1

          23转换为二进制为:00010111

          12转换为二进制为:00001100

                    计算结果为:00011011  =  27

        */ 

        System.out.println(23 ^ 12); 

        /*

        & 按位与 ,计算方式为:两个二进制数的位都为1则为1 ,否则为0

        1的二进制为 :00000001

        2的二进制为 :00000010

              结果为 :00000000 = 0 

        */ 

        System.out.println(1&2); 

        /*

          | 按位或 ,计算方式为:两个二进制位有一个为1就为1,否者为0

          5 的二进制为:00000101

          6 的二进制为:00000110

                  结果为:00000111 = 7

        */ 

        System.out.println( 5 | 6); 

        /*

          >> 有符号右移位  ,符号左边表示要被移位的数,右边表示需要移的位数,结果为正数则在左边补0,否则补1

          3 的二进制为:00000010

                向右移动1位:00000001 = 1 

        */ 

        System.out.println(3 >> 1);

//位移动 运算符

//1.左移  value << num  //3*2^2 = 3*4 = 12;

System.out.println(3 << 2);

//      1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,

//      2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,

//      3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,

//      转换为十进制是12。

}

}

相关文章

  • android 位运算

    public static void main(String[] args) { /* 符号为:最高位同时表示...

  • Android位运算知识

    在Android源码中,发现了大量使用位运算& | ~<<等等。如果不懂二进制位运算一些基本知识,势必会影响以后我...

  • MeasureSpec中的按位运算符、移位运算符讲解(左位移、与

    我们先看下基础知识 好了,下面看MeasureSpec中的按位运算、移位运算: android经常会有类似如图,(...

  • android位运算简单讲解

    目录:一、前言二、与或非是啥?三、实战四、小结五、写在最后 一、前言 在查看源码中,经常会看到很多这样的符号“&”...

  • 3、小众运算符の大课堂(一)

    较为简单の位运算符: & 位与运算| 位或运算^ 位异或运算~ 位取反运算 举例: 要做位运算,首先要把数据转...

  • 位运算及其应用

    内容概要: 位运算基本操作 基于位运算的状态压缩 位运算经典应用 位运算解N皇后问题 位运算 符号描述规则&与1&...

  • 位运算及用位运算实现权限控制

    请自行补习位运算相关知识 位运算 位运算示例 权限控制

  • 开发基础随笔之位运算符(Bitwise Operators)

    位运算符,属于算术运算符 按位逻辑运算符: 位移运算符: 位运算符的运算数只能是整数 位移运算符:按位左移 a<<...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 位运算

    位运算 1. &:按位与 规律:一假则假任何位上的数和1相&得到的结果还是那个数 2. |:按位或 规律:一真则真...

网友评论

      本文标题:android 位运算

      本文链接:https://www.haomeiwen.com/subject/mnjqjhtx.html