1

2 進数が 1010 (基数 10 の 10) の場合、2 で割ると最初の桁が削除される (最終的に 010 になる) ということですか?

基本的に、最初の桁を削除するにはどうすればよいですか (つまり、2 進数が 0 または 1 の場合、何も表示されません)。コードなどは必要ありません。2 で割ったり掛けたりするようなことを知りたいだけです。

また、2 進数の左端のゼロも考慮しないでください。

4

3 に答える 3

3

10進数の場合と同じように機能します。最初の桁がない401という数字は1です。400を引いたのですね。ここで、10で割るには、数字を右にシフトします。右にシフトされた401は040です。401/10=40。整数除算を使用しているため、1は破棄されることに注意してください。

したがって、2進数ではまったく同じですが、2の累乗です。最初のビットを削除しても2で除算されません。それはその位置の値を差し引きます。したがって、最大ビットを除いた101b(4 + 1 = 5)は、001b、つまり小数点以下1桁です。それは減算です:5-4=1。

2で割るには、基数10の場合と同様に、ビットを右にシフトします。したがって、101bは010bになり、小数点以下2桁になります。5/2 == 2(整数除算であるため、小数部分を削除します)

わかる?2進数について混乱したことがある場合は、10の累乗ではなく、2の累乗を使用して、桁と位置が基数10でどのように機能するかを考えてください。

于 2013-02-10T07:56:42.027 に答える
1

「最初の桁」が「最初の有効桁」を意味する場合、探しているのはのようなものnumber and not (1 shl (int(log number / log 2)))で、ここでandnotはビットごとの操作であり、shl左シフトを意味intし、整数に丸めます (決して上にはなりません)。logは、任意の底 (両方のケースで同じ底) の単なる対数です。

「最初の桁」が n 番目の位置の桁を意味する場合 (左から数えて右端の位置を 0 とする)、そのまま を実行しますnumber and not (1 shl position)

于 2013-02-10T07:42:12.160 に答える
-1

1010 を 0010 に変更するには、1000 を減算します: 1010 - 1000 = 0010.

于 2013-02-10T07:41:46.720 に答える