黑马程序员技术交流社区

标题: 进制转换问题 [打印本页]

作者: 涐扪①起奮乧    时间: 2013-11-21 20:54
标题: 进制转换问题
本帖最后由 涐扪①起奮乧 于 2013-11-22 09:46 编辑
  1. public static void toBin1(int num)
  2.         {
  3.                 char[] chs = {'0','1'};
  4.                 char[] arr = new char[32];
  5.                 int pos = arr.length;
  6.                 while(num!=0)
  7.                 {
  8.                         int temp = num & 1;
  9.                         arr[--pos] = chs[temp];
  10.                         num = num>>>1;
  11.                 }
  12.         
  13.                 for (int x=pos; x<arr.length; x++)
  14.                 {
  15.                         System.out.print(arr[x]);
  16.                 }
  17.         }
复制代码
请解释一下arr[--pos] = chs[temp];

--pos的意思是什么?详细点
作者: 摄影勾魂    时间: 2013-11-21 21:36
--操作数,表示先把操作数-1,再把操作数放到表示中运算。
在你的代码里,--pos就是先让pos=pos-1,再使用pos
作者: 习嘻嘻    时间: 2013-11-21 21:49
int 是32位的,
int temp = num & 1和 num = num>>>1;的循环就是从最后一位依次取出每一位二进制0,1直到num变为0;
然后--pos也就就是一个32位的数组的索引,arr[--pos]就存储着从位与功能取出来的0或1值
作者: freehiker    时间: 2013-11-21 23:11
--pos是因为arr.length-1是最大的角标值,--pos就是先进行--运算并赋值给pos后再进行其他操作




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