
No.7ベストアンサー
- 回答日時:
b1 b2 b3 b4 b5 b6 b7 b8 というビット並びを3ビット右回転すると、
b6 b7 b8 b1 b2 b3 b4 b5 となるわけだから、
b6 b7 b8 0 0 0 0 0 と
0 0 0 b1 b2 b3 b4 b5 を加算すれば求められる。
上は下位3ビットを5ビット左にシフトしているし、下は上位5ビットを右に3ビットシフトしている。
5=8-3と考えれば、左の場合と同様な処理方法が見えてくるはず。
回答有難うございます。
ご教示頂きました通り、結果的に以下の処理にて解決出来たと思います。
【ローテート.vbs】
------------------------------------------------------------
n = 255 ' 10進数
m = 0 ' ローテート数
'左回転式
Msgbox Int(( n / 2 ^ ( 8 - m )) + ( n * 2 ^ m AND 255 ))
'右回転式
Msgbox ( n * 2 ^ ( 8 - m ) AND 255 ) + Int(( n / 2 ^ ( 8 - ( 8 - m ))))
------------------------------------------------------------
たぶん合ってると思いますが、どうでしょうか、、、?
No.6
- 回答日時:
mビット左に回転ということは、
(1)上位mビットを(8-m)ビット右にシフト
(2)下位(8-m)ビットをmビット左にシフト
(3) (1)と(2)を加算
でいいですよね。
(1)は2^(8-m)で割った商
(2)は2^mをかけてから255とANDをとる
で求まるんじゃないですか。
おはようございます!
回答ありがとうございました!^^
ご教示頂きました内容を元に、以下の式で求める事が出来ました。
【example_left.vbs】
------------------------------------------------------------
n = "255" ' 10進数
m = 0 ' ローテート数
Msgbox Int(( n / 2 ^ ( 8 - m )) + ( n * 2 ^ m AND 255 ))
------------------------------------------------------------
小数点は切り捨てるようにInt関数を使っています。
これで合ってると思いますが、、、どうでしょうか?
あと右回転の場合はどーするんだろ、、、(=v=;
No.5
- 回答日時:
なら、n=255で試してみれば?
この回答への補足
だからさ、、、、、何度言えばわかるのよ、、、、
ちゃんと本文読んでくださいよ、、、。
文字コード扱いたいって言ってるじゃんよ、、、。
16進数FF(255)は2進数で11111111でしょーが、、、、
も~、、ほんとなんなんこの人、、、、、、、
あ!すいません!w
間違ってたの僕のほうでした!!w
マジすいません!!
ほんとごめんなさいいいい!!!!
どーやったらローテートできますかね?><;
すいません、、、。
No.4
- 回答日時:
> 以下の式でビット左回転を実現する事が出来ました。
>
> n = 10進数
> m = ローテート数
>
> n * 2 ^ m - (255 * (Int(n * 2 ^ m/ 255)))
できてない。
この回答への補足
> できてない。
えっと、君は頭弱いのかな?出来てますが?
キミさ、8ビットの最大値はわかりまちゅか?
16進数のビット演算についてよくお勉強しなおしておいで…。
あとさ、回答にもならない回答しないでくれる?
文句つけたいだけのガキ(子供)ならどっかいけよ…。
時間の無駄だから…。
No.2
- 回答日時:
10進数だの2進数だのが出てくるってことは、たぶん「文字列」に変換してから加工して、数値に戻すとかやってるんでしょう。
整数値を2で割ると、1ビット右にずらしたのと同じになります。
整数値を2で割った余りを求めると、一番右の1ビットを取り出すのと同じになります。
上位ビットを無視すれば、整数値に2をかけると1ビット左にずらしたのと同じになります。
整数値にAND演算子を使うと、特定のビットの値のを0にすることができます。
こういったものを使えば、文字列で加工するよりは速く処理できるでしょう。
この回答への補足
> こういったものを使えば、文字列で加工するよりは速く処理できるでしょう。
あの…回答は嬉しいんですがタイトルの通り"ローテート演算"について質問しています。
誰もシフト演算の事なんて聞いてないっての…きちんと本文読んで回答して下さい…。
ついでに、補足です。
以下の式でビット左回転を実現する事が出来ました。
n = 10進数
m = ローテート数
n * 2 ^ m - (255 * (Int(n * 2 ^ m/ 255)))
次は右回転です…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シーケンス制御についての質問...
-
スロースキャンコンピュータ 加...
-
ギルバートモデルの、ビット誤...
-
この画像の命令「CMP k300 D0 M...
-
0xffffとは?
-
Javaの問題について
-
8ビットのデータの、先頭ビット...
-
ビット演算について
-
C言語やC++言語でビット毎に値...
-
A4 持ち込み
-
プログラム言語
-
文系のSE志望です。プログラミ...
-
コンピューターの原理を根本か...
-
レジストってなんですか?
-
シーケンサのデータレジスタD...
-
昔のゲーム製作に使用する言語...
-
アセンブラのリンカのダウンロ...
-
Z80、6502、i8086、MC68000につ...
-
ATtiny2313のヒューズビットOSCCAL
-
MPLAB IDE v8.92アセンブラにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
一般のソフトで画像を扱う場合...
-
エクセルVBAのIf,Then 構...
-
ビットシフトってどんな時使うの?
-
シーケンス制御についての質問...
-
C言語で128bitの2進数のビット...
-
03分22秒36のような時間の単位...
-
文字参照は10進数と16進数では...
-
16ビットCPUで32ビットの計算方法
-
C言語やC++言語でビット毎に値...
-
C言語「K&R」の演習2-9について
-
2の補数
-
verilog 符号付加減算(最上位...
-
ULONGLONGよりも大きい整数を扱う
-
二元対称無記憶通信路を実現す...
-
情報科学の飽和演算、ラップア...
-
命令について
-
オーバーフローについて教えて...
-
マイクロコンピューター制御の...
おすすめ情報