作者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
推 gimmy731031:感謝T大~我想問一下0b compiler的方法有沒有哪裡有資 10/02 16:05
→ gimmy731031:料可以說明是用Integer.parseInt或是其他方法呢? 10/02 16:06
推 LPH66:你可以試著去找 javac 的原始碼 10/03 14:58
推 gimmy731031:javac的編譯碼不是一堆亂碼嗎 還是我誤會意思了@@? 10/03 21:07
推 LPH66:所以我說原始碼啊... 10/04 01:21