咪咕2020春招4月笔试编程题 (java实现)

本文介绍了一种算法,用于将32位无符号整数的二进制表示进行位反转,并提供了Java实现示例。通过将输入的整数转换为二进制数组,再进行位反转,最后转换回十进制数。

本文记述笔者参加的咪咕2020春招开发类笔试中的一道编程题。

题干

(题目背景较长,关于疫情期间的小区人口进出需要对暗号balabala,下面是抛开背景后的题干)

给定一个32位无符号整数的二进制表示,将其按位反转,即最后一位的数字,反转到第一位,倒数第二位的数字,反转到第二位,以此类推。写一个算法:
输入:一个32位无符号整数;
输出:它对应的二进制反转数的十进制数表示。

(题中注:注意,在Java中不支持无符号整数,此时,输入输出都是有符号整数,但这不应该影响到Java方案的实现,因为无论是有符号无符号,内部都是二进制表现,此时最好判断以下输入数的范围,如果超出表数范围,如果超出表数范围,则返回0即可)

输入:2861866653
输出:3111725397

方案一

根据题中注释部分,不难理解这里说的超出表数范围一定指的是32位数字超出了int型的表示范围,所以由此得出,输入若超出int型表示范围,可以直接输出0。那么,题中的示例中的输出在Java方案中应该可以变为0(如果我理解没错的话)。

import java.io.*;
import java.util.*;
public class Test{
	public static void main(String args[]){
		Scanner cin = new Scanner(System.in);
		String str = cin.next();
		long a = Long.valueOf(str); //32位可以用long储存
		if(a > Integer.MAX_VALUE || a < Integer.MIN_VALUE) {
			System.out.println(0); //int表示范围外的的数排除
		}else {
			int[] arr = new int[32]; //二进制表示,默认值都是0
			if(a > 0) 
				arr[0] = 1;  //正数为1,负数为0
			//二进制转换
			int i = 31;
			do{
				arr[i--] = (int) (a % 2);
				a = a / 2;
			}while(a != 1);
			arr[i] = 1;
			//按位反转
			int left = 0;
			int right = 31;
			while(left < right){
				int temp = arr[left];
				arr[left++] = arr[right];
				arr[right--] = temp;
			}
			//二进制转十进制
			int res = 0;
			int k = 0;
			for(int j = 31; j > 0; j--){
				if(arr[j] == 1)
					res += Math.pow(2,k);
				k++;
			}
			System.out.println(res);
		}
	}
}

2020.4.12

源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值