蓝桥杯 算法训练 高低位交换 Java

这篇文章讲述了如何使用Java编程语言,通过Scanner和StringBuilder类,实现将输入的无符号整数的高位和低位进行交换,并输出交换后的十进制值。
摘要由CSDN通过智能技术生成

问题描述

  输入一个无符号整数n(unsigned int类型),n可以用一个32位的二进制数表示(不足32位用0补足),我们称这个二进制数的前16位为“高位”,后16位为“低位”,输出将n的高位和低位交换后的值(用十进制表示)。
  例如:输入1314520,它的二进制表示为0000 0000 0001 0100 0000 1110 1101 1000(添加了11个0补足为32位),其中前16位为高位,即0000 0000 0001 0100;后16位为低位,即0000 1110 1101 1000。将它的高低位进行交换,得到了一个新的二进制数0000 1110 1101 1000 0000 0000 0001 0100,它对应的十进制数为249036820,所以输出249036820。

样例输入

1314520

样例输出

249036820

package 算法训练;

import java.util.Scanner;

public class ALGO477 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();
		sc.close();
		String bstr = Long.toBinaryString(n);
		int fix = 32 - bstr.length();
		
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < fix; i++) {
			sb.append('0');
		}
		sb.append(bstr);
		sb.toString();
		
		String a = sb.substring(0,16);
		String b = sb.substring(16);
		StringBuilder ans = new StringBuilder();
		ans.append(b);
		ans.append(a);
		String x = ans.toString();
		
		int res = Integer.parseInt(x,2);
		System.out.println(res);
		
	}

}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值