当前位置: 首页 > news >正文

Java 基础 之 位运算

转载于 : http://www.verejava.com/?id=16992602784016

public class Operation5
{
    public static void main(String[] args)
    {
        //位运算
        /*
            包括:
                与 &, 或 |, 取反 ~, 异或 ^
                带符号左移<<, 带符号右移 >>, 无符号右移 >>>
                1. & 就是二进制位如果都是1则为1,否则为0
                2. | 就是二进制位如果都是0则为0,否则为1
                3. ~ 就是二进制位如果是0取反变成1,否则如果是1取反变成0;
                4. ^ 就是运算两边二进制位两边同时相等时为0,否则为1
                5. <<就是将二进制位逐位向左移动n位,后面补n个0,相当于乘2;
                6. >>就是将二进制位逐位向右移动n位,前面补n个符号位,向当于除2;
                6. >>>就是将二进制位逐位向右移动n位,前面补n个0
        */
        byte a=1; //二进制 00000001
        byte b=8; //二进制 00001000
        byte c=127; //二进制 01111111
        byte d=-127;//二进制 10000001
        System.out.println(a&b);  //结果 00000000
        System.out.println(a|b);  //结果 00001001  2^3+2^0=9
        System.out.println(~a);   //结果 11111110补码 转换为原码=10000001=-1-1=-2 
        System.out.println(a^b);  //结果 00001001 =9;
        System.out.println(a<<1); //结果 00000010 2^1=2
        System.out.println(c<<1); //结果 11111110 =254
        System.out.println(a>>1); //结果 00000000 =0
        System.out.println(c>>1); //结果 00111111 =63
        System.out.println(d>>1); //结果 11000000补码 原码=10111111=-63-1=-64
        System.out.println(d>>>1);//结果 01000000原码
        /*
            注意:
             1.计算机存储时 二进制第一位是表示符号位 1 代表负数, 0代表正数
             2.计算机存储时以补码的方式存储的, 正数的补码跟原码一样,负数的补码是去掉第一位符号位取反然计算结果后  再 + 1 得到的.
             3. 那补码转换成原码就反过来 去掉第一位取反计算结果后  再-1.
             4. System.out.println 没有 System.out.println(byte b)方法,计算机先自动将byte转化成 int 然后在移动
        */
    }
}

转载于 : http://www.verejava.com/?id=16992602784016

转载于:https://blog.51cto.com/11842410/2146132

相关文章:

  • java泛型使用
  • 【RocksDB】TransactionDB源码分析
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 2-快速填充单元格
  • Linux学习笔记之文件系统
  • 所谓死锁
  • Linux下函数调用堆栈帧的详细解释【转】
  • Array.some()方法
  • python浏览器自动化测试库【2018/7/22-更新】
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 剥开比原看代码12:比原是如何通过/create-account-receiver创建地址的?
  • ubuntu 出错 /etc/sudoers is world writable
  • J2ee分布式架构 dubbo + springmvc + mybatis + ehcache + redis 技术介绍
  • RabbitMQ系列(五)使用Docker部署RabbitMQ集群
  • 小程序获取用户头像大图 小程序获取用户头像模糊的问题 小程序自定义转发头像模糊 小程序自定义转发分享大图...
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [Vue CLI 3] 配置解析之 css.extract
  • 【Leetcode】104. 二叉树的最大深度
  • 【mysql】环境安装、服务启动、密码设置
  • gf框架之分页模块(五) - 自定义分页
  • github从入门到放弃(1)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Leetcode 27 Remove Element
  • Lucene解析 - 基本概念
  • STAR法则
  • vue-cli在webpack的配置文件探究
  • Webpack 4 学习01(基础配置)
  • 百度小程序遇到的问题
  • 复习Javascript专题(四):js中的深浅拷贝
  • ------- 计算机网络基础
  • 看域名解析域名安全对SEO的影响
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 实现简单的正则表达式引擎
  • 试着探索高并发下的系统架构面貌
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 消息队列系列二(IOT中消息队列的应用)
  • 转载:[译] 内容加速黑科技趣谈
  • ​queue --- 一个同步的队列类​
  • #图像处理
  • (1)Android开发优化---------UI优化
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (function(){})()的分步解析
  • (js)循环条件满足时终止循环
  • (LeetCode) T14. Longest Common Prefix
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (八十八)VFL语言初步 - 实现布局
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)C语言家族扩展收藏 (转)C语言家族扩展