重学Android:从位运算到二进制表示(零)

前言

以下内容针对非科班同学,可以快速掌握位运算和二进制表示等计算机基础运算知识,看过源码的同学都知道,源码中大量运用了位运算知识,如果你对这方面不了解的话,看起来是比较困难的,如果你工作接触到蓝牙数据,串口数据收发等内容,这方面更是你必须了解的。

首先说下我自己,以前非科班出身,这方面内容几乎没了解过,但从实习开始领导直接告诉我让我负责蓝牙(用485通信的运动数据蓝牙模块)传输这方面工作(回头想想工作这几年一共接触到了不下于8种不同的蓝牙模块协议),就开始疯狂恶补这方面内容16进制,位运算,异或校验,校验和,进制转换…,越看越蒙,发现短期内并不能完全理解,于是就边学边开发,不知不觉就突然懂了,就是这么神奇,所以说如果前期看不懂没关系,看到能认识就行,再翻翻笔记理解一下,慢慢就懂了(经验之谈)!

说的有点多,直接开搂!

1. 二进制表达形式


1.1 什么是二进制?

计算机内部是通过二进制(0和1)来存储和处理数据的。每一位(bit)只能取两个值,0或1,而多个二进制位(bit)组合起来可以表示不同的数值。比如,8个二进制位可以表示的数值范围是0000000011111111,即0到255,也代表一个字节。

1.1 高位低位?

我们或许在某些地方听说过,高几位和低几位之说,它们都是对于二进制而言诞生的,比如一个字节 8个bit 00010010 通常把左边的称为高位,右边的称为低位,可以叫高四位0001和低四位0010,这没什么讲的,大家了解就行。

2. 位运算概述


位运算是直接对二进制位进行操作的运算方式,常用于底层开发、性能优化和算法实现中。与普通的算数运算(加法、减法等)不同,位运算操作的是二进制位,速度极快,且适用于很多底层系统和嵌入式开发。常见的位运算包括:位与(&)、位或(|)、位异或(^)、位取非(~)、左移(<<)、右移(>>)以及无符号右移(>>>)。

2.1 位与(&)

位与(&)是一个二元运算符,它对比特位上的两个数字进行操作。当且仅当两个相应的位都是1时,结果才为1,否则为0。

举个栗子:

  1101 (13)  
& 1011 (11)  
----------
  1001 (9)

只有第二位和第四位都为1,所以结果是1001,即9。通常使用(&)提取相应位的值,比如获取一个字节的高4位 就 &0xF0,获取低

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值