2017-12-11 11 views
0

こんにちは、現在、私は一度左にシフトしているバイナリ文字列を持っています。バイナリ文字列をシフトするときにLSBを失う

char bin[] = "01010001"; 

    printf("Binary number = %s \n", bin); 
    printf("Binary number shifted by 1 to the left = %s \n", (bin+1)); 

出力:

Binary number = 01010001 
    Binary number shifted by 1 to the left = 1010001 

シフトバージョンは、次のようになります。私は常に最下位ビットを失っていますなぜ10100010いうより1010001.誰もが知っていますか?

答えて

0

あなたのコードはCで書かれていると思いますか?

ここで、ビットのシフト操作は実行していません。

代わりに、char配列(ポインタ)を宣言し、ポインタの位置を1だけインクリメントします(bin+1経由)。 結果が表示されます。一番左の文字が途切れています。

数値シフトを使用する場合は、シフト演算子(<<,>>)を使用し、変数をバイナリ表現で表示します(例:here)。

関連する問題