黑马程序员技术交流社区
标题:
一道面试题
[打印本页]
作者:
毕影彬
时间:
2012-10-29 10:10
标题:
一道面试题
本帖最后由 毕影彬 于 2012-10-29 18:22 编辑
int x=0x1234567;
int a;
{
程序代码
}
a=0x34;
程序代码要自己实现。
其中的程序代码是你自己写的,其功能是把整形十六进制x的第三、四个位置的数取出来,重新附在十六进制a上,最后输出
作者:
丁桂松
时间:
2012-10-29 10:32
a=(x<<12)>>24;
左移12位,再右移24位.
作者:
赵云柯
时间:
2012-10-29 11:35
public class SubNumTest {
public static void main(String[] args) {
int x=0x1234567;
int a = getSubNum(x);
System.out.println("0x" + Integer.toHexString(a));
}
public static int getSubNum(int x) {
//将x转换为二进制,并以字符串形式返回
String binaryX = Integer.toBinaryString(x);
int xLen = binaryX.length();
//firstLen表示x的二进制表现形式下对应于十六进制第一位数字的位数
int firstLen = xLen % 4;
int beginIndex;
int endIndex;
if (firstLen == 0) {
beginIndex = 8;
} else {
beginIndex = firstLen + 4;
}
endIndex = beginIndex + 8;
//subBinaryX为截取后的二进制以字符串形式返回的值
String subBinaryX = binaryX.substring(beginIndex, endIndex);
int subBinaryXInt = Integer.parseInt(subBinaryX, 2);
return subBinaryXInt;
}
}
复制代码
将x先转化为二进制形式,并截取第3、4位对应的二进制子串。
其中由于x的第一位数字对应的二进制数有可能省略开头的数字0,所以要先判断第一位数字对应的二进制数的位数。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2