java 二进制运算_java二进制运算基础知识点详解|chu
一、二进制位运算
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相关推荐
- java远程_java实现电脑远程控制详解,附完整源代码
Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制.本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并 ...
- 【26天高效学完Java编程】Day02:开发利器之IDEA的安装使用、Java标识符、字符串及运算符等基础知识点详解
本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持. 专栏地址:26天高效学完Java编程 相关软件地址:链接地址 所有代码地址:链接地址 如果 ...
- predicate java 作用_Java函数式编程接口详解之Predicate
一.初识 Predicate是Java提供的重要的函数编程接口之一,作用主要是用于逻辑判断. 首先看看源码: @FunctionalInterface public interface Predica ...
- java 聚合_Java 8 聚合操作详解
Oracle在2014年3月19日如期发布了Java 8.Java 8版本被认为是具有里程碑意义的一个版本,Oracle在该版本中添加了许多新特性,包括Lambda表达式.方法引用.加强了安全等等. ...
- 【视频分享】Java Spring 经典入门基础教程详解
看到有小伙伴留言说想要Spring相关的,今天就分享一波关于 Spring 的入门视频,有需要的可以领取. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架 ...
- arraylist java 排序_Java ArrayList排序方法详解
由于其功能性和灵活性,ArrayList是 Java 集合框架中使用最为普遍的集合类之一.ArrayList 是一种 List 实现,它的内部用一个动态数组来存储元素,因此 ArrayList 能够在 ...
- java 事务_Java中事务总结详解(精华)
1.什么是JAVA事务? 通常的观念认为,事务仅与数据库相关. 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (is ...
- JAVA之多态万字重要知识点详解(附完整带详细注释的例子代码)
定义 允许不同类的对象对同一消息作出不同的响应. 分类 1.编译时多态: 也称为设计时多态,通过方法重载实现. 2.运行时多态: 在程序运行时动态决定调用哪个方法. 必要条件 1.满足继承关系. 2. ...
- integer java关键字_JAVA关键字及作用详解
Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements ...
最新文章
- Delphi 与 DirectX 之 DelphiX(77): TDIB.Distort();
- python小程序源代码-Python数据库小程序源代码
- 使用文本文件(.txt)进行数据存取的技巧总结
- sublime text3安装
- utf-8是否带签名 乱码问题。
- Luogu3455[POI2007] ZAP-Queries
- 吴恩达机器学习视频学习笔记(2)
- 数字图像处理-直方图均衡化,直方图规定化
- Java第十一章总结 枚举与泛型
- 火影抽卡模拟器1.0.5
- 铁威马F2-NAS2评测(家用云存储NAS)
- VUE项目保存照片到本地(微信环境不可行)
- javascript getDay()方法 语法
- 判断手机号输入的是否正确
- Java高并发和多线程的面试笔试题——稳拿offer
- linux tc实现ip流量限制
- 教女朋友学Python(8)——排排坐吃果果
- 添加/删除windows组件中没有IIS选项 怎么办
- 前端~css~Chrome调试工具、元素显示模式、盒模型、flex弹性布局
- 大年初一,给大家拜年了