黑马程序员技术交流社区

标题: 一道面试题 [打印本页]

作者: 毕影彬    时间: 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
  1. public class SubNumTest {
  2.        
  3.         public static void main(String[] args) {
  4.                 int x=0x1234567;
  5.                 int a = getSubNum(x);
  6.                 System.out.println("0x" + Integer.toHexString(a));
  7.         }

  8.         public static int getSubNum(int x) {
  9.                 //将x转换为二进制,并以字符串形式返回
  10.                 String binaryX = Integer.toBinaryString(x);
  11.                 int xLen = binaryX.length();
  12.                 //firstLen表示x的二进制表现形式下对应于十六进制第一位数字的位数
  13.                 int firstLen = xLen % 4;
  14.                
  15.                 int beginIndex;
  16.                 int endIndex;
  17.                 if (firstLen == 0) {
  18.                         beginIndex = 8;
  19.                 } else {
  20.                         beginIndex = firstLen + 4;
  21.                 }
  22.                 endIndex = beginIndex + 8;
  23.                
  24.                 //subBinaryX为截取后的二进制以字符串形式返回的值
  25.                 String subBinaryX = binaryX.substring(beginIndex, endIndex);
  26.                 int subBinaryXInt = Integer.parseInt(subBinaryX, 2);
  27.                 return subBinaryXInt;
  28.         }

  29. }
复制代码
将x先转化为二进制形式,并截取第3、4位对应的二进制子串。

其中由于x的第一位数字对应的二进制数有可能省略开头的数字0,所以要先判断第一位数字对应的二进制数的位数。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2