文档章节

Java I/O : Bit Operation 位运算

泥沙砖瓦浆木匠
 泥沙砖瓦浆木匠
发布于 2015/06/04 21:18
字数 707
阅读 254
收藏 10

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


© 著作权归作者所有

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

泥沙砖瓦浆木匠

粉丝 796
博文 139
码字总数 170656
作品 4
杭州
程序员
Java I/O : Java中的进制详解

作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算。这一讲,泥瓦匠带你走进Java中的进制详解。 一、引子 在Java世界里,99%的工作都是处理这高层。那么二进制,字节...

泥沙砖瓦浆木匠
2015/06/14
0
0
《Java从小白到大牛精简版》之第6章 运算符(下)

《Java从小白到大牛》纸质版已经上架了!! 本文是《Java从小白到大牛精简版》之第6章 运算符(上)继续... 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数...

tony关东升
06/26
0
0
《Java从小白到大牛精简版》之第6章 运算符(下)

《Java从小白到大牛》纸质版已经隆重上架了!!! 本文是《Java从小白到大牛精简版》之第6章 运算符(上)继续... 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型...

tony关东升
06/26
0
0
ByteBuffer.allocate() vs. allocateDirect

Operating systems perform I/O operations on memory areas. These memory areas, as far as the operating system is concerned, are contiguous sequences of bytes. It's no surprise th......

pczhangtl
2014/03/30
0
0
Java虚拟机:Java内存区域及对象

几个计算机的概念 为以后写文章考虑,也为巩固自己的知识和一些基本概念,这里要理清楚几个计算机中的概念。 1、计算机存储单位 从小到大依次为位Bit、字节Byte、千字节KB、兆M、千兆GB、TB,...

Java入门到入坟
07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
49分钟前
2
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
2
0
Jenkins使用

clean install -Dmaven.test.skip=true

1713716445
今天
1
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
3
0
HBase 表修复在线方式和离线方式

一、在线修复 1.1 使用检查命令 $ ./bin/hbase hbck 该命令可完整修复 HBase 元数据信息;存在有错误信息会进行输出; 也可以通过如下命令查看详细信息: $ ./bin/hbase hbck -details 1.2 ...

Ryan-瑞恩
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部