1201: 位运算之拼整数(Java)
WUSTOJ 1201: 位运算之拼整数
题目
参考博客
Description
输入无符号短整数k[hex.]和p[oct.],将k的高字节作为结果的低字节,p的高字节作为结果的高字节组成一个新的整数。
Input
k[hex.]和p[oct.]
Output
操作得到的新的整数n.
Sample Input
0xd9 01117
Sample Output
200
分析
- 最重要的一点,多组输入,,,题目居然没提醒
- Java输入8进制数和16进制数
输入保存到字符串中,用Integer.decode(String)转成整数 - 处理过程
k=0xd9 p=01117
高字节 低字节
k二进制: 0000 0000 1101 1001
k右移8位: 0000 0000 0000 0000
k的高字节是:0000 0000
p的二进制: 0000 0010 0100 1111
p右移8位: 0000 0000 0000 0010
p在左移8位: 0000 0010 0000 0000
p的高字节是:0000 0010
两个的高字节相加:0000 0010 0000 0000
结果为十六进制的:200
代码
import java.util.Scanner;
public class Main {
private Scanner sc;
private String sk, sp; // 输入的数字
private int ik, ip; // 转成整数后
private int ans; // 结果
public Main() {
sc = new Scanner(System.in);
while(sc.hasNext()) {
sk = sc.next();
sp = sc.next();
// 转成整数
ik = Integer.decode(sk);
ip = Integer.decode(sp);
ik >>= 8; // 右移去掉k的低8位
ip >>= 8; // 右移去掉p的低8位
ip <<= 8; // 左移8位,p的高字节作为结果的高字节
ans = ik + ip;
// 10进制转成16进制字符串输出
System.out.println(Integer.toHexString(ans));
}
sc.close();
}
public static void main(String[] args) {
new Main();
}
}