文档章节

Java I/O : Bit Operation 位运算

泥沙砖瓦浆木匠
 泥沙砖瓦浆木匠
发布于 2015/06/04 21:18
字数 707
阅读 253
收藏 10
点赞 0
评论 0

Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket

泥瓦匠喜欢Java,文章总是扯扯Java。 I/O 基础,就是二进制,也就是Bit

一、Bit与二进制

什么是Bit(位)呢?位是CPU处理或者数据存储最小的单元。类似于很小很小的开关,一开一关,表示为1或者0。所以,这就是计算机处理任何数据的“细胞”,要谨记。

而二进制,只是计算界一种规范和约定,准确的说是一种数制。念叨着“逢二进一”,这其实是一种算法。如图

image

二、位运算

说完了前面两点,泥瓦匠带你走向位运算的概念。数在内存中以二进制存储。位运算,也就是二进制运算,其实就是对数在内存的二进制直接操作的过程。这里有人发问了,

Q:都是1+1,位运算不见得结果不同吧。

A:这个问得好。位运算在常见的场景下是凸显不了好处的。而在特定下,一者计算方便,速度快,支持面广。比如我举几个例子,可以利用位运算判断值的奇数偶数,还有某些特定的算法比如压缩,加密算法严重依赖位算法。二者其存储字节小,比如在文件的权限(读,写等)都是用位来表示的。

上面,用小对话形式和举例一起说明了位运算。下面开始实战。

三、操作符实战

一、位运算与 & { 两位全1,结果才为1 } 如图:

bitwise-and

作用

① 清零。如果特定段位需要清0,则其他段与各位为0 与运算即可。0xFF & … 可以使靠右8位的其他都清0

② 取一个数中的指定位。1010 1110 & 0xF 可以获得 1010 1110的低4位。

二、位运算或 | { 只要有个1,结果就为1 } 如图:

bitwise-or

作用:用于补1,哪里需要1就补哪里。

三、异或运算 ^{ 两个响应位不同,则为1 }

作用: 特定位翻转 1010 1110 ^ 0xF = 1010 0001

四、移位运算 左移和右移

” < <” 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。如图:

shift-left

右移就不重复了。

这里再增加一个解决上面泥瓦匠提到的怎么判断奇数偶数。

// Is it odd?
(value & 0x1) > 0
// Is it divisible by two (even)?
(value & 0x1) == 0

 

四、总结

Bit 位虽小但是基石,滴水穿石。水滴-位,值得我们好好了解。这里复杂的压缩算法这些,以后写到算法再说。

要点:

概念

操作符运算

Writer      :BYSocket(泥沙砖瓦浆木匠)

微         博:BYSocket

豆         瓣:BYSocket

FaceBook:BYSocket

Twitter    :BYSocket


© 著作权归作者所有

共有 人打赏支持
泥沙砖瓦浆木匠

泥沙砖瓦浆木匠

粉丝 792
博文 139
码字总数 170656
作品 4
杭州
程序员
java编程新手入门学习的基础语法

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/28 ⋅ 0

2018年java编程语言经典基础知识总结学习

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰 ⋅ 05/21 ⋅ 0

001. 深入JVM学习—Java运行流程

Java运行流程图 2. Java运行时数据区 3. Java虚拟机栈 栈内存是线程私有的,其生命周期和线程相同; 虚拟机栈描述的是Java方法执行的内存模型:执行一个方法时会产生一个栈帧随后将其保存到栈...

影狼 ⋅ 昨天 ⋅ 0

002. 深入JVM学习—JVM对象访问模式

Object obj = new Object(); 分析 --- Object obj:描述的是保存在栈内存之中,而后保存有堆内存的引用,这个数据会保存在本地变量表中(变量表描述有哪些对象,保存对象栈的位置,栈对应着堆...

影狼 ⋅ 昨天 ⋅ 0

深入理解 ThreadLocal (这些细节不应忽略)

前言 对于 ThreadLocal 的使用,并不难。但要深入理解 ThreadLocal 的实现方式,需要细细揣摩。写本文前,我在网上看了很多关于 ThreadLocal 的分析,但却感到遗憾,因为很多文章存在着一定误...

徐志毅 ⋅ 04/11 ⋅ 0

Java面试2018常考题目汇总及答案带走不谢!

一、JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等...

java高级架构牛人 ⋅ 06/14 ⋅ 0

MVN package install error javac: invalid target release: 1.8

现象: --------------------------------- [ERROR] Failure executing javac, but could not parse the error: javac: invalid target release: 1.8 Usage: javac <options> <source files>......

孟飞阳 ⋅ 05/04 ⋅ 0

Windows安装配置JDK1.8

1.官网下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2.安装 双击jdk-8u171-windows-x64.exe,选择目标安装目录,笔者选择D:Java目录。 ......

把青春抚养大 ⋅ 05/12 ⋅ 0

请教Kafka在window下运行错误的问题

我在window server 2012 上运行 kafka 的时候 出现这个错误 我本地是可以的,但是在线上服务器就出错了 应该如何解决,请教下 !! Java的版本: C:UsersAdministrator>java -version java ...

Macrotea ⋅ 04/21 ⋅ 0

Java小白进阶笔记(2)-变量和数据类型

1.Java有多少种数据类型,数据类型的分类? 两种数据类型: 基本数据类型 引用数据类型 除了八种基本数据类型,其他的都是引用数据类型。 2.Java的工作机制? Java程序的源代码(.java)编译...

阿里云云栖社区 ⋅ 05/25 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Hive函数

1.函数explode (一转多) create table hive_wc(sentence string); load data local inpath '/home/hadoop/data/hive-wc.txt' into table hive_wc; 结果: hive > select * from hive_wc; ......

GordonNemo ⋅ 18分钟前 ⋅ 0

PE格式第三讲扩展,VA,RVA,FA的概念

作者:IBinary 出处:http://www.cnblogs.com/iBinary/ 版权所有,欢迎保留原文链接进行转载:) 一丶VA概念 VA (virtual Address) 虚拟地址的意思 ,比如随便打开一个PE,找下它的虚拟地址 这边...

simpower ⋅ 36分钟前 ⋅ 0

使用Java connector消费ABAP系统的函数

Java Connector(JCO)环境的搭建:Step by step to download and configure JCO in your laptop 我的ABAP系统有个函数名叫ZDIS_GET_UPSELL_MATERIALS,输入一个customer ID和product ID,会输......

JerryWang_SAP ⋅ 41分钟前 ⋅ 0

IDEA提示编码速度

焦点移动 将焦点冲代码编辑窗口移动到菜单栏:Alt+菜单栏带下划线字母 将焦点从工具窗口移动到代码编辑窗口 Esc或Shift+Esc 将焦点从代码编辑移动到最近使用的工具窗口 F12 模板提示 Ctrl+J...

bithup ⋅ 53分钟前 ⋅ 0

180623-SpringBoot之logback配置文件

SpringBoot配置logback 项目的日志配置属于比较常见的case了,之前接触和使用的都是Spring结合xml的方式,引入几个依赖,然后写个 logback.xml 配置文件即可,那么在SpringBoot中可以怎么做?...

小灰灰Blog ⋅ 今天 ⋅ 0

冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第...

人觉非常君 ⋅ 今天 ⋅ 0

Vagrant setup

安装软件 brew cask install virtualboxbrew cask install vagrant 创建project mkdir -p mst/vmcd mst/vmvagrant init hashicorp/precise64vagrant up hashicorp/precise64是一个box......

遥借东风 ⋅ 今天 ⋅ 0

python3.6 安装pyhook_3

我的是在win下的,忙了半天老是安装不了, pip install 也不行。 那么可以看出自己的版本是32bit 一脸懵逼 没办法 只好下载32版本的来安装 我一直以为 是 对应32 位的 。 下面是 小例子 http...

之渊 ⋅ 今天 ⋅ 0

004、location正则表达式

1、location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。 2、location的语法 = 开头表示精确匹配 ^~...

北岩 ⋅ 今天 ⋅ 0

CentOS7 静默安装 Oracle 12c

环境 CentOS7.5 最小安装 数据库软件 linuxx64_12201_database.zip 操作系统配置 关闭 SELinux sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config 关闭防火墙 systemctl disable ......

Colben ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部