2017-02-09 12 views
-1

如果負數從-31到-1,那麼我想將其表示爲111XXXXX格式。 我嘗試做它用「和」位運算符:按位「和」操作進入kotlin

println("0b00011111 & 0xe0 is ${0b00011111 and 0xe0}") 
println("31 & 0xe0 is ${31 and 0xe0}") 
println("0b00011111 & 0b11100000 is ${0b00011111 and 0b11100000}") 

但結果始終是0。我是在哪裏犯這樣的錯誤?

+0

你提到你的實際結果(0),但你期望的結果是什麼? – mfulton26

+0

我預計結果將是0b11111111或255。 –

+2

哦!我明白。我使用錯誤的操作符。這個問題可能會被關閉。 –

回答

0

它打印0,因爲00011111 and 11100000總是返回0and的返回類型爲Int,因此如果您想以基數2打印並且前導零,則必須對其進行格式化。

要將其轉換爲String在基地2個,你可以調用InttoString方法與基數參數:

val numberString = (0b00011111 and 0b11100000).toString(2); 

這會給你的號碼以二進制格式,但沒有前導零。你需要用零填充來獲得你想要的格式。我把這個任務交給你(提示:padStart);)

+0

打印只是例子。我想打印Int號碼。爲什麼{0b00011111和0b11100000}總是返回0? 0b00011111是Int編號。 0b11100000是整數。並返回Int。 –

+0

它總是0,因爲這就是數學。你什麼意思? – marstran

+0

要轉換爲字符串的更好的方法(imo)是'(0b00011111和0x11100000).toString(2)'。這樣你就不必使用Java類 – therealfarfetchd