Re: [問題] Binary 轉十進位如何實現疑問

看板java作者 (小安)時間12年前 (2011/10/02 00:31), 編輯推噓4(401)
留言5則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《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

10/02 16:05, , 1F
感謝T大~我想問一下0b compiler的方法有沒有哪裡有資
10/02 16:05, 1F

10/02 16:06, , 2F
料可以說明是用Integer.parseInt或是其他方法呢?
10/02 16:06, 2F

10/03 14:58, , 3F
你可以試著去找 javac 的原始碼
10/03 14:58, 3F

10/03 21:07, , 4F
javac的編譯碼不是一堆亂碼嗎 還是我誤會意思了@@?
10/03 21:07, 4F

10/04 01:21, , 5F
所以我說原始碼啊...
10/04 01:21, 5F
文章代碼(AID): #1EXq140r (java)
文章代碼(AID): #1EXq140r (java)