一、二进制位运算

1. 按位与(&)

位运算实质是将参与运算的数字转换为二进制,而后逐位对应进行运算。

按位与运算为:两位全为1,结果为1,即1&1=1,1&0=0,0&1=0,0&0=0。

例如51 & 5 -> 00110011 & 00000101 = 00000001 -> 51 & 5 = 1

特殊用法:

(1)与0相与可清零。

(2)与1相与可保留原值,可从一个数中取某些位。例如需要取10101110中的低四位,10101110 & 00001111 = 00001110,即得到所需结果。

2. 按位或(|)

两位只要有一位为1,结果则为1,即1|1=1,1|0=1,0|1=1,0|0=0。

特殊用法:

(1)与0相或可保留原值。

(2)与1相或可将对应位置1。例如,将X=10100000的低四位置1,使X | 00001111 = 10101111即可。

3. 异或运算(^)

两位为“异”,即一位为1一位为0,则结果为1,否则为0。即1^1=1,1^0=0,0^1=0,0^0=1。

特殊用法:

(1)使指定位翻转:找一个数,对应X要翻转的各位为1,其余为0,使其与X进行异或运算即可。例如,X=10101110,使低四位翻转,X ^ 00001111 = 10100001。

(2)与0相异或保留原值。例如X ^ 00000000 = 10101110。

(3)交换两变量的值。(比借助容器法、加减法效率高)原理:一个数对同一个数连续两次进行异或运算,结果与这个数相等。

因此,交换方法为:A = A ^ B,B = A ^ B,A = A ^ B。

4. 取反(~)

将一个数按位取反,即~ 0 = 1,~ 1 = 0。

5. 左移(<

将一个数左移x位,即左边丢弃x位,右边用0补x位。例:11100111 << 2 = 10011100。

拓展:==原码==:一个整数按照绝对值大小转换为二进制即为原码;

==反码==:将二进制数按位取反,得到的即为反码;

==补码==:反码加1即为补码。

==由于计算机底层硬件的限制,负数均使用补码表示。==

若左移时舍弃的高位全为0,则每左移1位,相当于该数十进制时乘一次2。

例:11(1011) << 2 = 44(11表示为1011时实际上不完整,若计算机中规定整型的大小为32bit,则11的完整二进制形式为00000000 00000000 0000000 00001011)

6. 右移(>>)

将一个数右移若干位,右边舍弃,正数左边补0,负数左边补1。每右移一位,相当于除以一次2。

例:4 >> 2 = 1,-14 >> 2 = -4。

7. 无符号右移(>>>)

将一个数右移若干位,左边补0,右边舍弃。

例:-14 >>> 2 = (11111111 11111111 11111111 11110010) >>> 2 = (00111111 11111111 11111111 11111100) = 1073741820

二、Java内置的进制转换用途方法十进制转成十六进制Integer.toHexString(int i)

十进制转成八进制Integer.toOctalString(int i)

十进制转成二进制Integer.toBinaryString(int i)

十六进制转成十进制Integer.valueOf("FFFF", 16).toString()

八进制转成十进制Integer.valueOf("2234", 8).toString()

二进制转成十进制Integer.valueOf("0110", 2).toString()

感谢大家的阅读和对华域联盟的支持。

java 二进制运算_java二进制运算基础知识点详解|chu相关推荐

  1. java远程_java实现电脑远程控制详解,附完整源代码

    Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制.本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并 ...

  2. 【26天高效学完Java编程】Day02:开发利器之IDEA的安装使用、Java标识符、字符串及运算符等基础知识点详解

    本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学完Java编程 相关软件地址:链接地址 所有代码地址:链接地址 如果 ...

  3. predicate java 作用_Java函数式编程接口详解之Predicate

    一.初识 Predicate是Java提供的重要的函数编程接口之一,作用主要是用于逻辑判断. 首先看看源码: @FunctionalInterface public interface Predica ...

  4. java 聚合_Java 8 聚合操作详解

    Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. ...

  5. 【视频分享】Java Spring 经典入门基础教程详解

    看到有小伙伴留言说想要Spring相关的,今天就分享一波关于 Spring 的入门视频,有需要的可以领取. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架 ...

  6. arraylist java 排序_Java ArrayList排序方法详解

    由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...

  7. java 事务_Java中事务总结详解(精华)

    1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...

  8. JAVA之多态万字重要知识点详解(附完整带详细注释的例子代码)

    定义 允许不同类的对象对同一消息作出不同的响应. 分类 1.编译时多态: 也称为设计时多态,通过方法重载实现. 2.运行时多态: 在程序运行时动态决定调用哪个方法. 必要条件 1.满足继承关系. 2. ...

  9. integer java关键字_JAVA关键字及作用详解

    Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements ...

最新文章

  1. Delphi 与 DirectX 之 DelphiX(77): TDIB.Distort();
  2. python小程序源代码-Python数据库小程序源代码
  3. 使用文本文件(.txt)进行数据存取的技巧总结
  4. sublime text3安装
  5. utf-8是否带签名 乱码问题。
  6. Luogu3455[POI2007] ZAP-Queries
  7. 吴恩达机器学习视频学习笔记(2)
  8. 数字图像处理-直方图均衡化,直方图规定化
  9. Java第十一章总结 枚举与泛型
  10. 火影抽卡模拟器1.0.5
  11. 铁威马F2-NAS2评测(家用云存储NAS)
  12. VUE项目保存照片到本地(微信环境不可行)
  13. javascript getDay()方法 语法
  14. 判断手机号输入的是否正确
  15. Java高并发和多线程的面试笔试题——稳拿offer
  16. linux tc实现ip流量限制
  17. 教女朋友学Python(8)——排排坐吃果果
  18. 添加/删除windows组件中没有IIS选项 怎么办
  19. 前端~css~Chrome调试工具、元素显示模式、盒模型、flex弹性布局
  20. 大年初一,给大家拜年了

热门文章

  1. 设计模式之美(8)-结构型-适配器模式
  2. 遥感图像目标检测研究综述
  3. 从SNMP到WBEM--论网络和系统管理的发展和展望(SNMP篇)
  4. Beautiful Soup 基本使用方法
  5. 那些年我们一起撸过的缓存写法
  6. pyechars切片器如何实现
  7. 国潮文化引领手办市场新风向 b站会员购成消费首选平台
  8. 前端开发免费资源分享
  9. 飞机荷兰滚产生原因、受力分析、解决方法
  10. 标点符号换行 css