zoukankan      html  css  js  c++  java
  • java中的位运算符

    package com.woo;
    
    /*****************[计算器中定点数的表示方式]**************************/
    //原码、反码和补码
    //在计算机内,定点数有3种表示法:原码、反码和补码
    //原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
    //反码:表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,[但符号位除外]。
    //补码:表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1
    
    /*****************[在Java中所有数据的表示方法都是以补码的形式表示]**************************/
    //补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
    //正数的补码是其本身,负数的补码是其绝对值(即正数)取反加1。这里是各位取反,包括了符号位,注意与反码的区别
    
    public class Home {
    
    public static void main(String[] args) {
    
    //一个字节是8位,最高位为符号位0代表正数1代表负数
    byte i = 1; //00000001
    byte j = 2; //00000010
    
    //移位 [向左移动两位 表示:1x2*2] 
    System.out.println(i<<2); //00000100 = 4
    
    //移位 [向右移两位 表示:1/(2*2),结果转换为了int所以为0] 
    System.out.println(i>>2); //00000000 = 0
    
    //与 [不同出0,数字1的二进制和数字2的二进制,每一位进行与运算,得到 00000000]
    System.out.println(i&j); //00000000 = 0
    
    //或 [有1即为1,数字1的二进制和数字2的二进制,每一位都按照该规则进行运算,得到 00000011]
    System.out.println(i|j); //00000011 = 3
    
    //异或 [不同出1,数字1的二进制和数字2的二进制,每一位进行异或运算,得到 00000011]
    System.out.println(i^j); //00000011 = 3
    
    /*
    * 非 [~在java中即对每一位都进行反转,即1变为0,0变为1,得到 11111110,这个是源码。在java中都是以补码的方式表示数据的,因为二进制11111110的最高位为1,即为负数。
    * 因为在java中,负数的补码是其绝对值(即正数)取反加1,那么就是:
    * 11111110的绝对值为:01111110
    * 取反[java中取反为每一位都取反]:1111110 取反得到 10000001
    * 再加1得到补码:10000010 [最高位为符号位,刚好为 -2]
    */
    System.out.println(~i);
    }
    }
  • 相关阅读:
    二级缓存配置和原理
    延迟加载
    proxy和no-proxy的策略取值的区别
    inverse理解
    Java Spring mvc 操作 Redis 及 Redis 集群
    章节6 关联映射 (转载)
    8.28笔记
    8.26函数相关练习
    8.26 课堂自由笔记 还有考皮的老师笔录
    大话设计模式1.0.2-----策略模式 单一职责原则 和 开放-封闭原则
  • 原文地址:https://www.cnblogs.com/wooyoohoo/p/9455291.html
Copyright © 2011-2022 走看看