5.1 写程序使整数N中第i位到第j位的值与整数M中的相同。

题目

给定两个32位的数,N和M,还有两个指示位的数,i和j。 写程序使得N中第i位到第j位的值与M中的相同(即:M变成N的子串且位于N的第i位和第j位之间)

例子:

输入: N = 10000000000, M = 10101, i = 2, j = 6

输出: N = 10001010100

解答

方案1:先将N中第0位到第i位保存下来(左闭右开:[0, i)),记作ret, 然后将N中第0位到第j位全清0([0, j]),通过向右移动j+1位然后再向左移动j+1位得到。 最后用上面清0后的值或上(m<<i)再或上ret即可。

代码如下:

int update_bits(int n, int m, int i, int j){int ret = (1 << i) -1;ret &= n;return ((n>>(j+1)) << (j+1)) | (m<<i) | ret;
}

方案2:用一个左边全为1,中间一段全为0(这段的长度与m长度一样), 右边全为1的掩码mask去和n按位与,得到的值是将n中间一段清0的结果。 然后再与m左移i位后按位或,得到最终结果。

代码如下:

int update_bits1(int n, int m, int i, int j){int max = ~0;   //全为1int left = max - ((1 << j+1) - 1);int right = ((1 << i) -1);int mask = left | right;return (n & mask) | (m << i);
}

careercup-位操作5.1相关推荐

  1. 《深入理解计算机系统》读书随笔-位操作

    最近开始读<深入理解计算机系统>这本书.对于书中提到的从程序员的角度解读计算机系统这一说法非常感兴趣,所以决定好好读一读.从开始接触计算机编程就是站在一个高级语言的层次,虽然对编译原理,操 ...

  2. 计算机32位操作系统最大识别到内存,win7 32位系统可以支持多大的内存_win7 的32位系统最大支持多少g的内存...

    大家都知道win7系统有32位和64位之分,而两者的安装配置是不一样的,一般4G内存的我们安装64位的系统,但是很多用户不知道win7 32位系统可以支持多大的内存,这就给大家分享一下win7 的32 ...

  3. java右移位_java、、移位操作方法

    < int leftShift = 10; System.out.println("十进制:" + leftShift + ", 二进制:" + Inte ...

  4. [CareerCup] 11.2 Sort Anagrams Array 异位词数组排序

    11.2 Write a method to sort an array of strings so that all the anagrams are next to each other. 这道题 ...

  5. python中二进制以什么开头_Python二进制表示和位操作

    我们都知道在计算机中所有的信息最终都是以二进制的0和1来表示,而有些算法是通过操作bit位来进行运算的,这就需要我们了解Python中如何去表示二进制,又如何是进行位运算的. 二进制的表示 首先在Py ...

  6. 建立数组并写入数据_redis高并发利器:神奇的位操作,底层原理、数据结构剖析...

    本文主要和大家分享一下redis的高级特性:bit位操作. 力求让大家彻底学会使用redis的bit位操作并掌握其底层实现原理!主要包含以下内容: redis位操作命令示例 底层数据结构分析 为什么他 ...

  7. 【c语言】位操作实现无符号整数的乘法运算

    输入两个无符号整数x, y, 用位操作实现无符号整数的乘法运算.不用考虑整数的溢出. 输入: 235 657 输出: 154395 #include <stdio.h> #include ...

  8. [CareerCup] 17.7 English Phrase Describe Integer 英文单词表示数字

    17.7 Given any integer, print an English phrase that describes the integer (e.g., "One Thousand ...

  9. [CareerCup] 17.6 Sort Array 排列数组

    17.6 Given an array of integers, write a method to find indices m and n such that if you sorted elem ...

  10. Careercup - Google面试题 - 4699414551592960

    2014-05-06 13:34 题目链接 原题: we have a random list of people. each person knows his own height and the ...

最新文章

  1. python文本替换 数据库_Python pptx(Power Point)查找和替换文本(ctrl+H)
  2. python电脑配置要求cpu-Python限制内存和CPU使用量的方法(Unix系统适用)
  3. mybatis添加记录时返回主键id
  4. 一个权限的设置,你会混淆么
  5. Window2008R2安装Telnet客户端
  6. Cut and Paste(模拟)
  7. android设置wifiip地址,android Wifi 设置静态ip地址的方法
  8. Ubuntu14.04下安装Chrome出现“未安装软件包 libappindicator1”问题的解决办法
  9. metrics的timer功能在java项目中的使用方法
  10. 【JAVA面试】java面试题整理(4)
  11. Asp.net MVC 3实例学习之ExtShop(一)————创建应用并设置开发环境
  12. KVM系列之硬件管理
  13. 神经元的细胞体位于哪里,神经在人体的什么部位
  14. 为什么要创建SRT?
  15. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付
  16. Druid middleManager如何获取task信息并启动Peon进程
  17. Stripe完善账户与使用(重点)
  18. 大学计算思维c语言答案,【程序设计论文】计算思维为下的C语言程序设计教学(共2755字)...
  19. Halcon 读.ply格式
  20. ArcGIS 栅格计算器con函数用法

热门文章

  1. 微软 python替代vba_微软将要用Python取代VBA,Python工程师又双叒叕要涨薪了!
  2. 各部件作用计算机,计算机硬件有哪些部件,各部件的作用是什么?
  3. r语言结构方程模型可视化_R语言时间序列分析(二):ts对象及其可视化
  4. conda里的r语言,使用“ conda”从github安装R软件包。
  5. Java 多线程详解(三)------线程的同步
  6. 当你使用R安装包出现rdb is corrupt问题的时候
  7. 打印快递面单pdf_如何开通使用拼多多电子面单?
  8. cmake编译多个文件夹_CMake应用技巧:在一个工程中编译运行多个文件
  9. 取消button的点击效果_(Vue动效)6.Vue中列表过渡效果
  10. Swagger 教程