2017-02-03 9 views
1

たとえば、私はビット操作:バイナリ「アレイ」内の単一文字を変更

long binarynumber=10011; 

を持っていると私はそれが

binarynumber=binarynumber>>1; 

しかし、その代わりの右端の数を破棄し(行いたい場合数字は5桁で01001になります)、最後の数字がバイナリ "文字列"の最初の場所に移動する11001にします。私は出力する文字列として使用しているので、2進数の値は本当に重要ではありません。

+1

1を知っていますバリエーションのために、この

public static String circularShiftBinary(long binaryNumber, int shift) { String bin = Long.toString(binaryNumber); //check that the shift isn't a fully circular shift if(shift % bin.length() != 0) while(shift-- > 0) bin = bin.charAt(bin.length() - 1) + bin.substring(0, bin.length() - 1); return bin; } 

例call

public static void main(String[] args) { long binaryNumber = 10011; int shift = 0; while(shift < 6) System.out.println(circularShiftBinary(binaryNumber, shift++)); }//main method 

ような何かをやっについて話しています10011100011011をバイナリ形式で表します。 2. 'binarynumber = binarynumber >> 1で' 'Shoul''を定数として扱いますか? –

+1

右端の数字をどこにシフトインするかをどのように知っていますか?あなたが数値レベルでやっているだけなら、 '10011'→' 11001'→ '11100'→' 1110'→ '111'→' 111'→ '111'→'先行ゼロは保持されないので、「111」となる。 – Andreas

答えて

1

あなたは `長いbinarynumberは= 10011`であることを出力

10011 
11001 
11100 
01110 
00111 
10011 
+0

'新しいLong(binaryNumber).toString()'を 'Long.toString(binaryNumber)'に置き換えます。 – Andreas

+0

@Andreasありがとう、私は本当に新しいロングオブジェクトを作成する必要はありません –

+0

正確に 'bin = bin.charAt(bin.length() - 1)+ bin.substring(0、bin.length ) - 1);これはどうしたらこのコードを変更して、それが他の方法にシフトするのでしょうか? – Spano