`
shenlan177
  • 浏览: 67584 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

通过位操作进行数据的复合存储

阅读更多
比如要将日期和数据的ID进行复合存储,可以使用接位或与位移来完成。

long currTime = System.currentTimeMillis();
long originId = 500000L;
currTime = 0x1398b3f213b;


注意到按位或的规则:

1 | 1 = 1
1 | 0 = 1
0 | 0 = 0


因此在反转复合数据的时候,需要保证日期和数据ID的二进制位数不能有1|1的或操作。此处首先让ID值取得较大,同时进行左移操作

long targetId = originId << 32;
targetId = 0x7a12000000000L;


此时进行日期与ID的按位与操作时仍会有四位二进制同时为1,其中一个办法是将id的初始值设得更大些,我们采用另一种办法。

注意到时间的值最后三位为毫秒值,可以将其归0减小精度至秒

Long targetTime = TimeUnit.MILLISECONDS.toSeconds(currTime);


此时进行复合数据后就不会产生不可逆的后果。

Long mark = targetTime | targetId;


若需要反转求出其值:

originId = mark >> 32;
currTime = (mark ^ (id << 32)) * 1000L;
分享到:
评论

相关推荐

    位操作全面总结

    在计算机系统中,所有的数据都是以二进制的形式存储的,位操作允许程序员直接对这些二进制数据进行操作,进行数据的置位、清除和状态切换等。位操作的优点在于它的直接性,这意味着相比于使用其他诸如算术运算和逻辑...

    c位操作.pdf

    C++作为一门功能强大的编程语言,提供了按位操作符这一工具,使得我们能够在最基本的层面上对数据进行精细的操作。本文将深入探讨C++中的按位操作符,特别是移位运算符的应用场景及注意事项,以期帮助读者更好地理解...

    按位操作,按位运算符允许按照位来操作整型变量

    ### 按位操作及其应用 #### 一、按位运算符概述 按位运算符是一种专门用于操作整型变量的特殊运算符,它能够直接针对整数的每一位进行操作。这种运算符不仅可以应用于所有有符号(signed)和无符号(unsigned)...

    c位操作.docx

    C++中的按位操作符是一种强大的工具,它允许开发者对整型变量的每一位进行单独操作。无论是signed(有符号)还是unsigned(无符号)整型,甚至是char类型,都可以应用这些操作符。它们在处理二进制状态标识、存储多...

    用友U8 数据库说明 用友U8系列的数据字典

    1. 使用:在日常操作中,通过数据字典可以了解每个业务功能涉及的数据,从而更好地理解和执行业务流程。对于开发者而言,它是进行系统扩展和定制的重要参考。 2. 维护:随着企业业务的变化,数据字典也需要同步更新...

    按位操作.docx

    总的来说,按位操作和移位运算符在处理二进制数据、节省内存和提高计算效率等方面具有重要作用,尤其是在处理底层系统编程和嵌入式系统时。然而,对于带符号整数的右移操作,需要注意不同编译器可能有不同的行为,...

    VC++常用数据类型及其操作详解

    本文将深入探讨VC++中的基本数据类型,包括它们的定义、用途以及如何进行常见操作。 1. **基本数据类型** - `char`: 用于存储单个字符,如字母、数字或符号,占用1字节(8位)内存。 - `int`: 用于表示整数,通常...

    节 复合数据类型PPT学习教案.pptx

    本教程主要涵盖了四种主要的复合数据类型:结构体(Struct)、联合体(Union)、位段(Bit Field)和枚举(Enum),以及类型定义(Typedef)。 1. **结构体(Struct)**: - **定义**:结构体是由不同类型的变量...

    微软复合文档格式

    ### 微软复合文档格式详解 #### 一、总体介绍 复合文档格式是Microsoft开发的一种文件格式,主要用于存储像Microsoft ...通过对扇区、SID链、MSAT、SAT以及目录的理解,我们可以有效地解析和操作复合文档中的数据。

    位带技术在STM32程序设计中的应用.pdf

    在C语言中,变量是通过运算符进行操作的基本单位,没有直接访问和修改单个位的方法,因此需要编写复合语句来实现位操作。例如,要将一个8位无符号整数的最高位设为1,必须通过移位操作和位运算来实现,这种方法编译...

    基于C语言的常用数据结构的操作集合.zip

    通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

    定义并使用变量,复合类型

    在Oracle的PL/SQL编程中...总的来说,PL/SQL的变量定义和使用提供了丰富的数据存储和处理能力,而复合类型则让我们能够更灵活地组织和操作数据。在编写PL/SQL程序时,合理利用这些特性,可以使代码更加高效、易于维护。

    UNITfour数据仓库技术 精品资料.pptx

    12. 支持复合键码,适应数据仓库中复杂的数据关联。 13. 有效地管理变长数据,避免传统数据库中的性能问题。 14. 可选择性地关闭锁管理,减少无更新状态下的资源消耗。 此外,数据仓库的上下文维和上下文信息对于...

    创建一系列基于C语言的文件操作API。简化文件数据处理.zip

    通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

    《数据结构》习题集:_数组和广义表(第1次更新2022-3)整理.pdf

    除了存储和操作,数据结构习题集中的问题还会涉及到数据结构的基本操作,如查找和修改。例如,在特殊类型的矩阵,如下三角矩阵中,由于其结构的对称性,可以采取按行优先的顺序将其转换为一维数组存储,以优化存储...

    复合文档文件格式研究版.pdf

    在深入理解复合文档文件格式后,可以进行文件解析、内容提取、数据恢复等多种操作。这种格式广泛应用于Microsoft Office系列软件,如Excel和Word,使得用户可以方便地集成各种类型的数据,创建交互式的文档。对于...

    stm32f103 USB的HID和MSC复合设备官方源码

    STM32F103系列微控制器是STMicroelectronics公司推出的基于ARM Cortex-M3内核的高性能、低成本的32位微控制器。该芯片广泛应用于各种嵌入式系统设计,尤其是需要USB接口的项目。在本源码中,开发者可以找到实现USB ...

    基于FME的CASS地形图数据处理与检查的思路探讨.pdf

    在CASS-DWG格式转换中,图形元素的编码属性十分重要,因为这些属性可以与CASS中的全要素表进行关联,通过这种关联可以将图形元素的属性信息与CASS配置表中的信息相匹配,进而筛选出不一致的数据,并将其作为问题数据...

    UNIT 4 数据仓库技术.pptx

    多维DBMS则与数据仓库互补,擅长处理多维数据模型,如OLAP(在线分析处理),支持复杂的分析操作。 最后,数据仓库的刷新策略,如“数据复制”和“变化数据捕捉”,确保数据的实时性和一致性,使决策者能获取最新的...

Global site tag (gtag.js) - Google Analytics