二进制?十进制!(C语言刷题)(位运算)

发布时间:2024年01月23日

专栏:https://blog.csdn.net/2301_79293429/category_12545690.html

题目描述

给定两个十进制整数 :?A,B

你需要把它们的二进制形式十进制的运算法则相加输出结果。

例如:

A=3,B=2的时候,A 的二进制表示是 : 11?,?B 的二进制表示是 10?,你需要输出答案为 :?21

输入描述:

一行两个十进制整数:?A,B

输出描述:

一行一个整数,表示相加的结果。

示例1

输入

2 3

输出

21

示例2

输入

5 4

输出

201

备注:

对于?100?% 的数据:
1<=A,B<=32768

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
#include<string.h>
#define ll long long

//可能要考虑    正负(涉及到位运算都要考虑)            的情况
/*该题范围:1<=A,B<=32768,所以不需考虑负数的情况*/
int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	ll sum=0,m=1;
    /*注意开long long*/
	while (a||b)
	{
		int a2 = a & 1, b2 = b & 1;
		sum += (a2 + b2)*m;
		m *= 10;
		a >>= 1;/**/
		b >>= 1;/**/
	}
	printf("%lld\n", sum);
	return 0;
}

恭喜你今天又进步了一点点啦~

文章来源:https://blog.csdn.net/2301_79293429/article/details/135783810
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。