黑马程序员技术交流社区
标题:
初学者 进制 学的云里雾里
[打印本页]
作者:
灬王一鹏
时间:
2015-9-5 22:11
标题:
初学者 进制 学的云里雾里
进制这一块看了好几遍了,每次当时懂了,过一段时间就忘了.
求大神教教这一块应该用什么姿势学?
作者:
兴许不接客
时间:
2015-9-5 22:21
多练习吧 ,还有就是搞清楚原理
作者:
asinzuo
时间:
2015-9-5 22:47
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲,一问你进制转换,你就要想到 "3" 。
////////////////////重要的就是三步////////////////////////
int temp = num & base ;//&的目的是为了获得最低几位的 1
sb.append(chs[temp]);
num = num >>> offSet;
//////////////////////////////////////////////////
不知道你现在掌握的是哪一种版本的转换代码的写法,我这里给出的是最终版的最简洁的版本。
进制转换练习
十进制-转16进制(其实是二进制--->16进制,因为用的是位运算,10进制转成二进制后,再运算的)就是获取32位中的每4位。首先看最低4位,其实就是拿4位里的有效位1,用这个数&1111,就得到最低4位了。再右移4位
10--->8 右移3位。
静态方法:Integer.toBinaryString(int a)把整数转成二进制
public static void main(String[] args)
{
toHex(60);
toOctal(8);
toBinary(6);
}
private static void toHex(int num) {
trans(num,15,4);
}
private static void toOctal(int num) {
trans(num,7,3);
}
private static void toBinary(int num) {
trans(num,1,1);
/*二进制还可以这么写
StringBuffer sb = new StringBuffer();
while(num!=0)
{
sb.append(num % 2);
num = num /2;
}
System.out.println(sb.reverse());
*/
}
private static void trans(int num ,int base ,int offSet) {
StringBuffer sb = new StringBuffer();
int numberSystem = num ;
//查表法
char [] chs = {'0','1','2','3',
'4','5','6','7',
'8','9','A','B',
'C','D','E','F'};
//转成二进制
while(num!=0)
{
////////////////////重要的就是三步////////////////////////
int temp = num & base ;//&的目的是为了获得最低几位的 1
sb.append(chs[temp]);
num = num >>> offSet;
//////////////////////////////////////////////////
}
System.out.println(numberSystem+"转成"+(base+1)+"进制:"+sb.reverse());
}
复制代码
作者:
灬王一鹏
时间:
2015-9-5 22:58
asinzuo 发表于 2015-9-5 22:47
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲 ...
谢谢 学长 拿走了 真心感谢!
作者:
kieedi
时间:
2015-9-5 23:00
这个理解就好了吧,老师说了, 不用太操心这个,后期不咋用的。
作者:
silencea
时间:
2015-9-5 23:00
用王者的姿势.
作者:
平凡的鱼
时间:
2015-9-5 23:00
一样对进制头疼,感觉还是理解为上.
作者:
大大的大孩
时间:
2015-9-5 23:02
哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥哥个人
作者:
群魔乱舞
时间:
2015-9-5 23:03
多看,多联系就好了
作者:
Rzzz
时间:
2015-9-5 23:03
前面层主那个三步get 有用呀..
作者:
韩春兴
时间:
2015-9-5 23:05
额(⊙o⊙)…(⊙o⊙)…(⊙o⊙)…
作者:
淡忘、悲年华
时间:
2015-9-5 23:06
理解透了,就记住了
作者:
阮文江
时间:
2015-9-5 23:06
这些东西本来就容易忘记,理解就好了,以后用多了自然就记得了!
作者:
魁子
时间:
2015-9-5 23:12
asinzuo 发表于 2015-9-5 22:47
你不要把所有代码都被背上,你只要记住,主要的代码就是三句话。其他的顺藤摸瓜,就能想起来了,再简单的讲 ...
每一句基本都理解,就是让我写````逻辑顺序就会乱!也就是跟不会写一样`````也正试图记住它好难```
只知道转16进制&15 右移4位
转8进制&7 右移三位
转2进制%1 右移一位
int offste的作用是什么?谁给它赋值??
作者:
迷茫不堪的年纪
时间:
2015-9-5 23:50
多练就好
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2