位图BitMap

一、基础

1、类型基础

计算中最小的内存单位是bit,只可以表示0,1

类型 大小
1Byte 8bit
1int 4byte 32bit
1 long 8byte 64bit
1 float 4byte 32bit
1 char 2byte 16bit

2、存储基础

int a = 1,这个1在计算中是怎么存储的?
0000 0000 0000 0000 0000 0000 0000 0001

3、运算符基础:

(1)左移 <<

8 << 2 => 8* 2^2=32 ;向左移动多少位,就是乘以2的n次方
8: 0000 0000 0000 0000 0000 0000 0000 1000
==> 0000 0000 0000 0000 0000 0000 0010 0000 => 2^5= 22222=32

(2)右移 >>

8 >> 2 => 8 / 2^2 = 2 ; 向右移动多少位,就是除以2的n次方
8: 0000 0000 0000 0000 0000 0000 0000 1000
==> 0000 0000 0000 0000 0000 0000 0000 0010 => 2^1=2

(3) & 、|

位与 &:同位上的两个数都是1则位1,否则为0(一假则假)
位或 |:同为上的两个数只要有一个为1 则为1,否则为0(一真则真)

(4)除法转与运算&

将除法转换为按位与运算(&)的操作主要适用于特定的情况,尤其是当我们希望得到一个数除以 (2^n) 的结果时。这种转换通常用于快速地获取一个数除以 (2^n) 的商或者求余数。

基本原理
  • 除以 (2^n) 的商:
    对于任何整数 x 和正整数 n,x 除以 (2^n) 的商,可以通过将 x 右移 n 位来获得,即 x >> n。
    例如,x / 8 可以通过 x >> 3 来计算。
  • 求 (2^n) 的余数:
    对于任何整数 x 和正整数 n,x 除以 (2^n) 的余数,可以通过 x 与 (2^n - 1)进行按位与运算来获得,
    即x & (2^n - 1)。
    例如,x % 8 可以通过 x & 7 来计算。
示例

假设我们有一个整数 x,我们想计算 x 除以 8 的商和余数。

  • 计算商:
    x / 8 可以通过 x >> 3 来计算。
    这是因为右移 3 位相当于除以 (2^3),即除以 8。
  • 计算余数:
    x % 8 可以通过 x & 7 来计算。
    这是因为 7 的二进制表示为 0111,与任何小于 8 的数进行按位与运算,都会返回该数本身。
    4/8 余数是4;转成 4&7 => 0100 & 0111 = 0100(一假则假,只要有0,则结果是0) ,也就是4
代码

下面是一个简单的 Java 示例,演示了如何使用按位与运算来计算除法和求余数:

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值