整数转换-C语言/Java

描述

整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。A,B范围在[-2147483648, 2147483647]之间。

示例1:

复制代码
输入:A = 29 (或者0b11101), B = 15(或者0b01111)
输出:2

示例2:

输入:A = 1,B = 2

输出:2

分析:确定需要改变几个位才能将整数A转成整数B是说A需要改变几个二进制位才能转换为B,也就是A中有几个不同于B的二进制位,需用位运算和移运算。

C语言

int convertInteger(int A, int B){

int a=A^B;//按位异或

int count=0;

while(a){

if((a & 1) != 0){

count++;//计算1的个数

}

a>>= 1;//从a的最右侧的二进制位开始比较,位数依次向右移一位,最左侧补符号位

}

return count;

}

int main(){

int a,b;

scanf("%d%d",&a,&b);

int count=convertInteger(a,b);

printf("%d",count);

}

Java

复制代码
import java.util.Scanner;
public class Solution {
    public static int convertInteger(int A, int B) {
        int a=A^B;//按位异或
        int count=0;
        int i;
        for(i=31;i>=0;i--)
        {
            if(((a>>>i)&1)==1)//向右移i位,最左侧补0
                count++;//计算1的个数
        }
        return count;
    }
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int a= sc.nextInt();
        int b= sc.nextInt();
        int count=convertInteger(a,b);
        System.out.println(count);
        sc.close();
    }
}
相关推荐
40岁的系统架构师2 分钟前
2 秒杀系统架构
java·系统架构
亥时科技8 分钟前
智慧招商宣传系统(源码+文档+部署+讲解)
java·数据库·开源·源代码管理
码老白9 分钟前
【老白学 Java】简单位移动画
java·开发语言
Ring__Rain17 分钟前
C++ 标准模板库STL--Pair
开发语言·c++·算法
Galeoto18 分钟前
alloc complex data in c, and access in fortran
c语言·开发语言·算法
夜半被帅醒23 分钟前
JavaSpring AI与阿里云通义大模型的集成使用Java Data Science Library(JDSL)进行数据处理
java·人工智能·阿里云
夜半被帅醒30 分钟前
【JAVA】神经网络的基本结构和前向传播算法
java·神经网络·算法
TANGLONG2222 小时前
【初阶数据结构与算法】排序算法总结篇(每个小节后面有源码)(直接插入、希尔、选择、堆、冒泡、快速、归并、计数以及非递归快速、归并排序)
java·c语言·数据结构·c++·算法·面试·排序算法
我荔枝呢!2 小时前
集合(List、Set、Map)ArrayList、LinkedList、Vector、HashSet、LinkedHashSet、HashMap
java·开发语言
zhxueverme2 小时前
JAVA学习笔记_Redis进阶
java·笔记·学习