`
薛定谔
  • 浏览: 22405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将二进制的一段替换为另一段二进制

 
阅读更多

题目:

        给定32bit的数字N、M,两个字节位i、j(0<i<j)。写一个算法将数字N的第i到j之间的bit值替换为数字M的bit值。

         例如下面的这个例子:

          int N = 0b10000000000, int M = 0b10101, int i = 2, int j = 6;

          替换的结果为 N = 0b10001010100;

 

解答:

 

//对于输入参数的校验省略,假设所有的入参都符合要求
private int updateBits(int N, int M, int i, int j){
    //bit位全是1
    int max = ~0;

    //第一位到j位之间全是0,包括j位,j+1位到32位之间全是1
    int left = max - (1<<j - 1);
    
    //长度为i,bit位全为1的数
    int right = 1<<i - 1;
    
    //第i+1到j位之间全为0,其他位全为1
    int mask = left | right;

    //1. 将N的i到j位全部置为0;
    //2. 将M左移i位;
    //3. 将左移之后的M的j位之前进行截断
    //4. 将截断后的M设置到N的i到j位之间
    return (N & mask) | ((M<<i) & (~mask));

}

 

0
3
分享到:
评论

相关推荐

    bvm:所有二进制文件的版本管理器

    为二进制作者提供一种简单的方式来分发和让他们的用户管理版本。跨平台-在尽可能多的Shell中提供良好的体验(在Windows上不需要WSL )。向后兼容(一次达到1.0)。分布式-使用URL和路径。允许在组织内轻松分发批准的...

    pspdecrypt:解密PSP二进制文件的简单工具

    发行说明1.0 将pspdecrypt和psardecrypt合并为一个二进制文件@ artart78用其他选项重写顶级实用程序syscon密钥IPL XOR支持@proximav 禁用损坏的KIRK1 ECDSA签名验证,这会减慢某些OFW的提取速度支持解密其余IPL变体...

    ACM 算法经典代码 数据结构经典代码

    2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 图论: 1.Prim算法求最小生成树 2.Dijkstra算法求单源...

    ZBar-iOS:一个剥离并修改过的,可二进制直接置入工程的ZBar-iOS版本

    当我们有更深一层的需要的时候,我们可能会要求将ZBar的二进制直接嵌入我们的项目中,而这个就是一个被替换出来的ZBar-iOS部分。可以直接嵌入到项目中。由于历史的悠久,ZBar在64位iOS下编译有大量的警告,我在这里...

    十六进制计数器.docx

    此时可通过矩阵键盘 KEYBOARD 设置二位的初始数值(每按一次键输入一位,如果连接输入,则进行依次替换。比如第一次输入 3,第二次输入 A,表示输入的初始值为 3A,如果接着又输入 5,则初始值为 A5)。SW1 开关置为...

    badwords:php扩展以惊人的速度过滤坏词

    Badwords是一个PHP扩展,用于快速替换一段文本中的多个单词。 它支持区分大小写和不区分大小写的匹配。 它要求对其进行操作的文本编码为UTF-8和/或GBK。 使用Badwords 入门 一次使用Badwords进行多字替换有四个步骤...

    51汇编集成开发环境

    5、丰富的辅助工具为应用系统的开发提供了方便: 目标代码的转换:可以将二进制代码文件(*.bin)转换为十六进制代码文件(*.hex)或文本格式的代码文件(*.obj),也可以将十六进制代码文件(*.hex)或...

    实验一:Python程序基础练习.doc

    1、输入一个自然数,输出它的二进制、八进制、十六机制表示形式。 2、格式化输出以下内容,其中每列数据各占8个字符,标题行居中对齐,不足8字符用*号填充,其余内容居中对齐,效果如下: ***学号*** ***姓名*** *...

    计算机组成原理课程实习报告.doc

    LT1-LT2—&gt;AX 机器指令应为:01110000 微地址(二进制) 微代码(十六进制) 001 111 0000 00000 100 000 111 011010(0041C4) 011 010 0000 00000 010 100 111 011011(0029C5) 011 011 0110 00000 000 001 111 ...

    文本整理器V3.0_绿色-

     合并行:把以硬回车换行的行合并为一段。  段间加空行:在段落后添加一个空行,不论它原来是否有空行。  ⑷对标点符号的整理:  对常用标点符号进行半角-全角转换,包括逗号、分号、冒号、引号等多种标点。 ...

    ACM常用代码

    1.x 的二进制长度 2.返回 x 的二进制表示 中从低到高的第 i 位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中 国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 图论: 1.Prim 算法求最小生成 树 2....

    acm常用代码及算法

    1.x的二进制长度 2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 图论: 1.Prim算法...

    你必须知道的495个C语言问题

    这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充,或者控制结构域的对齐方式? 2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 2.15 如何确定域在结构中的字节偏移...

    Linux高级bash编程

    对于二进制文件的一个grep替换 10-8. 列出系统上的所有用户 10-9. 在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名保存到一个文件中 10-12. 一个C风格的for...

    SuperSU Pro 2.82 SR5.apk

    - 在一段时间内为应用程序授予/拒绝root权限 - PIN保护 - 每个应用程序PIN保护 - 调整自动拒绝倒计时 SUPERUSER 这是为了替换超级用户(如果已安装),您可以使用其中一个。你无法将它们结合起来。因此,打破超级...

    Advanced Bash-Scripting Guide <>

    对于二进制文件的一个grep 替换 10-8. 列出系统上的所有用户 10-9. 在目录的所有文件中查找源字串 10-10. 列出目录中所有的符号连接文件 10-11. 将目录中的符号连接文件名保存到一个文件中 10-12. 一个C 风格的for ...

    ACM 内部预定函数

    2.返回x的二进制表示中从低到高的第i位 3.模取幂运算 4.求解模线性方程 5.求解模线性方程组(中国余数定理) 6.筛法素数产生器 7.判断一个数是否素数 8.求子距阵最大和 9.求一个数每一位之和 10.质因数分解 11.高斯...

    汇编语言实验指导书代码与汇编考核报告.docx

    3.通过键盘输入一段英文论文,请编写查询、替换和统计等功能。 4.计算器 实验:实验一:用机器指令和汇编指令编程 实验2 汇编命令(伪指令)实验 实验3 顺序结构程序实验 实验4 简单分支结构程序实验 实验5 循环结构...

Global site tag (gtag.js) - Google Analytics