A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涐扪①起奮乧 中级黑马   /  2013-11-21 20:54  /  965 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 涐扪①起奮乧 于 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的意思是什么?详细点

点评

FFF
我开始怀疑,你的25个技术分,是不是我加错了???  发表于 2013-11-22 00:20

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 你的基础和豆腐渣差不多~自减都不知道~.

查看全部评分

4 个回复

倒序浏览
--操作数,表示先把操作数-1,再把操作数放到表示中运算。
在你的代码里,--pos就是先让pos=pos-1,再使用pos

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 问题比较简单,木有分分~三个金币意思意思~.

查看全部评分

回复 使用道具 举报
int 是32位的,
int temp = num & 1和 num = num>>>1;的循环就是从最后一位依次取出每一位二进制0,1直到num变为0;
然后--pos也就就是一个32位的数组的索引,arr[--pos]就存储着从位与功能取出来的0或1值

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 问题比较简单,木有分分~三个金币意思意思~.

查看全部评分

回复 使用道具 举报
--pos是因为arr.length-1是最大的角标值,--pos就是先进行--运算并赋值给pos后再进行其他操作

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 问题比较简单,木有分分~三个金币意思意思~.

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马