2017-02-09 7 views
-1

負数が-31〜-1の場合は、111XXXXX形式で表現したいと思います。 私はそれを使用してやろう「と」ビット演算子:Bitwise "and" 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

00011111 and 11100000は常に0を返すので、0を出力します。戻り値の型がandの場合はIntなので、それを基数2で先頭にゼロで印刷する場合は、書式を設定する必要があります。

ベース2にStringに変換するには、基数パラメータでInttoStringメソッドを呼び出すことができます。

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

これはバイナリ形式であなたの番号を与えるが、先行ゼロなしになります。あなたはあなたが望むフォーマットを得るためにゼロを左に置く必要があります。私はその仕事をあなたに任せます(ヒント:padStart);

+0

印刷は単なる例に過ぎません。私はInt番号を印刷したいと思います。なぜ{0b00011111と0b11100000}が常に0を返すのですか? 0b00011111はInt番号です。 0b11100000はInt番号です。 Intを返します。 –

+0

それは数学的なので、常に0です。どういう意味ですか? – marstran

+0

文字列に変換するより良い方法(imo)は '(0b00011111と0x11100000).toString(2)'になります。あなたはJavaクラスを使用する必要はありませんそのように – therealfarfetchd