栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java每日一题——二进制插入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java每日一题——二进制插入

一、题目描述

给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。

测试样例:

1024,19,2,6
返回:1100

题目链接:

二进制插入__牛客网

二、解题思路

题目中已经保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。

将m和n分别转换成二进制, 发现将m的二进制数位插入到n的二进制的第j到第i位,即将m左移j位后求和(或使用或运算)即为所求。代码非常简单,但是想到使用左移却不容易,可以在以后遇到题目中包含“二进制”时,考虑到移位运算符。

移位运算符

1.左移  <<

        最左侧位去掉,最右侧补0。

2.右移  >>

        最右侧位去掉,最左侧补符号位(正数补0,负数补1)。

3.无符号右移  >>>

        最右侧位去掉,最左侧补0。

三、代码
import java.util.*;

public class BinInsert {
    public int binInsert(int n, int m, int j, int i) {
        m<<=j;//m左移j位
        return m|n;//或m+n
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号