当前位置:首页 > 经验 >

二进制存储(二进制怎么存储信息)

来源:原点资讯(www.yd166.com)时间:2022-11-06 19:01:18作者:YD166手机阅读>>

假设有一个需求是这样的:在200亿个随机整数中找出某个数是否存在其中?要求效率高,而且要节省内存。

我们知道,在Java中,int占4字节,1字节=8 byte,1 byte = 8 bit(位)

如果用int存储,那就是200亿个int,因而占用的空间约为

(20000000000*4/1024/1024/1024)≈74.5G。

内存消耗很大,一般的家用电脑是满足不了需求的,所以将数据存储在内存中存储是不合适的。

如果按位存储就不一样了,200亿个数就是200亿位,占用空间约为

(2000000000/8/1024/1024/1024)≈2.33G,节省了30倍的空间。

实际上这就是bitmap的思想。Bitmap的基本思想是用一个bit位来标记某个元素对应的Value,而Key即是该元素本身。采用bit存储数据,可以大大节省存储空间。

Bitmap是什么?如何在bitmap中表示一个数呢?

我们知道计算机底层存储的都是二进制数据,二进制数只有0和1。bitmap每一位的值也只能是0或1,0表示不存在,1表示存在。

这样我们可以很容易表示{1,2,4,6}这几个数:

二进制存储,二进制怎么存储信息(1)

计算机内存分配的最小单位是字节,也就是8位,那如果要表示{12,13,15}怎么办呢?

当然是在另一个8位上表示:

二进制存储,二进制怎么存储信息(2)

这样的话,好像变成一个二维数组了

1个int占32位,那么我们只需要申请一个int数组长度为 int tmp[1 N/32] 即可存储,其中N表示要存储的这些数中的最大值,于是:

tmp[0]:可以表示0~31

tmp[1]:可以表示32~63

tmp[2]:可以表示64~95

。。。

于是,对于任意整数M,M/32可以得到下标,M2就可以得到它在此下标的哪个位置。

那么,怎么把一个数放进Bitmap呢?比如想把5这个数字放进去

插入一个数

首先,5/32=0,52=5,也是说它应该在b[0]的第5个位置。我们可以把1向左移动5位,然后和b[0]按位或即可。

二进制存储,二进制怎么存储信息(3)

二进制就是:

二进制存储,二进制怎么存储信息(4)

首页 12下一页

栏目热文

十进制转二进制口诀(二进制转十进制对照表)

十进制转二进制口诀(二进制转十进制对照表)

今天用两种方法来给大家解释一下如何把十进制数转换成二、十六进制数。方法一:口诀:除N取余,逆序排列。例1:K200=B?...

2022-11-06 19:14:14查看全文 >>

二进制对照表(二进制最简单的理解)

二进制对照表(二进制最简单的理解)

十进制二进制2的指数表示10000 00012^020000 00102^140000 01002^280000 100...

2022-11-06 19:15:31查看全文 >>

为什么以二进制存储(二进制存储是不是比较节省空间)

为什么以二进制存储(二进制存储是不是比较节省空间)

我们前段时间聊了牛顿与莱布尼茨的微积分之争,莱布尼茨所发明的符号被普遍认为更综合,适用范围更加广泛。作为17世纪最伟大的...

2022-11-06 18:40:02查看全文 >>

存储与运算都用二进制吗(为什么用二进制来存储数据)

存储与运算都用二进制吗(为什么用二进制来存储数据)

人类的世界里,数字通常是十进制表示的(例如0,1,2,3,4,1000等),计算机的世界只能识别二进制,因此对于它说,数...

2022-11-06 18:39:15查看全文 >>

八位二进制拨码图(二进制拨码图解)

八位二进制拨码图(二进制拨码图解)

容易让人糊涂的BCD码和十六进制BCD码(Binary-Coded Decimal‎)是二进制编码的十进制数的缩写,BC...

2022-11-06 19:25:55查看全文 >>

计算机进制转换方法口诀(计算机进制转换最简单方法)

计算机进制转换方法口诀(计算机进制转换最简单方法)

你知道吗?我们用的阿拉伯数字是500年前的古人选定的版本,而十进制是几万年前原始人的选择。未来,我们还会一直沿用它吗?图...

2022-11-06 18:50:03查看全文 >>

二甲苯俗称是什么东西(二甲苯的用途)

二甲苯俗称是什么东西(二甲苯的用途)

在装修中,几乎不可避免地要使用各种各样的胶,这些”胶“的学名和分子式比较复杂,不要说是普通消费者,就是业内人士有时也很难...

2022-11-06 19:12:18查看全文 >>

二甲苯一般用在什么东西上(什么是二甲苯)

二甲苯一般用在什么东西上(什么是二甲苯)

防老剂生产厂家的小编今天带大家一起来认识一下关于二甲苯的理化性质的相关介绍,二甲苯的CAS.NO是106-42-3能沿低...

2022-11-06 18:42:24查看全文 >>

二甲苯为什么叫香蕉水(二甲苯对男性的危害)

二甲苯为什么叫香蕉水(二甲苯对男性的危害)

网络图。长江日报融媒体7月27日讯(记者黄莹 通讯员刘姗姗)大热天开着窗户粉刷墙面,女子嗓子干得冒烟,随手拿起旁边一瓶“...

2022-11-06 19:18:59查看全文 >>

二甲苯的用途(二甲苯的用途与危害)

二甲苯的用途(二甲苯的用途与危害)

家装装修中新产品太多,往往会产生很多的有害物质,但是我们作为装修业主又不太了解,今天襄阳装修网小编主要为大家介绍一下家装...

2022-11-06 18:42:58查看全文 >>

文档排行