作者tkcn (小安)
看板java
标题Re: [问题] Binary 转十进位如何实现疑问
时间Sun Oct 2 00:30:57 2011
※ 引述《gimmy731031 (yuancheng)》之铭言:
: 大家好,小弟对於Java binary 处理有些疑问,想和前辈们请教一下,
: Java binary 就我所知要转成10进位数值有两种方式,
: 1. int i = Integer.parseInt( "11111111", 2);
: 2. int i = 0b11111111;
: 这两种不同的方法宣告,在底层的运算上是否相同呢?
前者是在执行时期呼叫 Integer.parseInt 将字串转成 int;
後者则是在 compile time 就事先将字串转成数字,
以 literal 型式存在 byte code 中。
不过 "有可能" compiler 也正好也是用 Integer.parseInt 就是。
: 另外Java在读这个binary的数值的时候,它是怎麽知道这个String是255呢?
: 是不是它去读取这个String 每个 char[i] 阵列内的数值(0 or 1),
: 之後再去乘以2的i次方,最後再把这个值算出来,
: 因为我在Integer.parseInt这个方法里面追朔,并没有看到这样的写法,
注意看里头的 while 回圈,result 每回合都会乘上 radix,
这算法在计概通常都会教。
基本上也就是你说的意思,只是这样实作起来比较容易。
: 也不知道和0b11111111的处理方式有什麽不一样,
: 所以想请教一下底层的运算是否和我想的一样呢?
: 还是哪里可以找的到相关的资源呢@@~
: 以上,先谢谢各位了。
: PS:binary转int应该就只有这两种方式吧@@??
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.114.78.231
1F:推 gimmy731031:感谢T大~我想问一下0b compiler的方法有没有哪里有资 10/02 16:05
2F:→ gimmy731031:料可以说明是用Integer.parseInt或是其他方法呢? 10/02 16:06
3F:推 LPH66:你可以试着去找 javac 的原始码 10/03 14:58
4F:推 gimmy731031:javac的编译码不是一堆乱码吗 还是我误会意思了@@? 10/03 21:07
5F:推 LPH66:所以我说原始码啊... 10/04 01:21