Java I/O : Bit Operation 位运算
什么是Bit(位)呢?位是CPU处理或者数据存储最小的单元。类似于很小很小的开关,一开一关,表示为1或者0。所以,这就是计算机处理任何数据的“细胞”,要谨记。
而二进制,只是计算界一种规范和约定,准确的说是一种数制。念叨着“逢二进一”,这其实是一种算法。如图
说完了前面两点,泥瓦匠带你走向位运算的概念。数在内存中以二进制存储。位运算,也就是二进制运算,其实就是对数在内存的二进制直接操作的过程。这里有人发问了,
Q:都是1+1,位运算不见得结果不同吧。
A:这个问得好。位运算在常见的场景下是凸显不了好处的。而在特定下,一者计算方便,速度快,支持面广。比如我举几个例子,可以利用位运算判断值的奇数偶数,还有某些特定的算法比如压缩,加密算法严重依赖位算法。二者其存储字节小,比如在文件的权限(读,写等)都是用位来表示的。
上面,用小对话形式和举例一起说明了位运算。下面开始实战。
三、操作符实战
一、位运算与 { 两位全1,结果才为1 } 如图:
作用:
① 清零。如果特定段位需要清0,则其他段与各位为0 与运算即可。0xFF … 可以使靠右8位的其他都清0
② 取一个数中的指定位。1010 1110 0xF 可以获得 1010 1110的低4位。
二、位运算或 | { 只要有个1,结果就为1 } 如图:
作用:用于补1,哪里需要1就补哪里。
三、异或运算 ^{ 两个响应位不同,则为1 }
作用: 特定位翻转 1010 1110 ^ 0xF = 1010 0001
四、移位运算 左移和右移
” ” 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。如图:
右移就不重复了。
这里再增加一个解决上面泥瓦匠提到的怎么判断奇数偶数。
Bit 位虽小但是基石,滴水穿石。水滴-位,值得我们好好了解。这里复杂的压缩算法这些,以后写到算法再说。
要点:
概念
操作符运算
【Java SE】运算符详解 在我们C语言深度解剖的专栏已经讲解了一些常见的运算符了,但是基本的 + - * / 没有细说,毕竟那是深度解剖,是在一定基础上更深入学习的,我们 Java 是从 0 基础讲解的,所以这里会涉及到很全面的操作符
java中 byte为8 bits,那么-128为什么是最小值? 我们知道java中基本类型byte占8 bits,取值范围是-128到最+127,从这个正负号大家也能看出表示这个范围的二进制数是有符号位的,就是第一位。
给出两个不大于65535的非负整数,判断其中一个的16位二进制表示形式,是否能由另一个的16位二进制表示形式经过循环左移若干位而得到。 循环左移和普通左移的区别在于:最左边的那一位经过循环左移一位后就会被移到最右边去。
二哥聊RPA 公号「二哥聊RPA」。关注我,一起洞察 RPA ◎ RPA创业者 ◎ 现明堂红木商业顾问,为十月结晶、可啦啦、鑫蜂维等多家企业提供 RPA 咨询服务 ◎ 希望帮助大家在 RPA 上做一些力所能及的事情
相关文章
- Java项目毕业设计:基于springboot+vue的电影视频网站系统「建议收藏」
- java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
- java map 二维数组_Java二维数组实现简单Map
- maven编译报错:java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags[通俗易懂]
- java 汉字乱码_Java中文乱码问题
- 【说站】java静态代理是什么
- java date当前时间_JAVA中获取当前系统时间
- c语言中的异或运算_java中的异或运算符
- Java反射,通过对象获取属性及属性值
- JAVA后台启动8080端口号被占用
- Java开发三大怪
- Java程序员必备知识,《JAVA编程思想》包和访问权限详解编程语言
- 使用Java在Linux系统上开发:一步步安装全部组件(java环境linux)
- JAVA错误: 找不到或无法加载主类详解编程语言
- 在Linux下搭建完美的Java开发环境(linux搭建java开发环境)
- Java与Oracle联手构建数据库新世界(java和oracle)
- 客户端建立Redis集群:Java客户端指南(redis集群java)
- 时间Redis中Java配置实现高效过期时间管理(redisjava过期)
- 缓存Redis Java实现高效过期缓存处理(redisjava过期)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- Oracle收购了Java一个伟大的转折点(java被oracle吗)
- 收购Oracle收购Java重新定义软件开发未来(java被oracle)
- Java加速Oracle开发之旅(java中oracle包)
- 在Java中利用Oracle数据库进行应用开发(java中oracle)