
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で質問しましょう!
似たような質問が見つかりました
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 哲学 AIと人間の思考の違い 12 2023/02/04 12:21
- 物理学 質量とは何か? 6 2023/04/17 20:44
- 物理学 二つの光時計 2 2022/06/02 16:32
- 数学 ピラミッド計算の仕方を教えて下さい。 5 2023/01/03 16:04
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- その他(ソフトウェア) F-BASICで計算中の実行が中途で勝手に止まり、大変困っています。 2 2023/03/02 16:15
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- 数学 情報処理詳しい人!! A4縦のレポート文書に4:3の大きさの横向きの写真画像を貼り付けることにした。 2 2022/12/18 02:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ひまわり」と「なでしこ」の違い
-
8ビットのデータの、先頭ビット...
-
0xffffとは?
-
C言語で128bitの2進数のビット...
-
シーケンス制御について質問で...
-
C言語のビット演算子について
-
シーケンス制御についての質問...
-
符号無し整数xを右にnビット回転
-
情報科学の飽和演算、ラップア...
-
オーバーフローについて教えて...
-
PS3に搭載されている"Cell"は、...
-
A4 持ち込み
-
ライン数とステップ数の違いは?
-
アセンブラとコンパイラ
-
MASMの擬似命令「ASSUME」について
-
レジストってなんですか?
-
アセンブリ言語について。
-
なぜソフトウェアでハードウェ...
-
アセンブラのコードについて質...
-
割り込みベクターをC言語で書...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
C言語で128bitの2進数のビット...
-
シーケンス制御についての質問...
-
PS3に搭載されている"Cell"は、...
-
文字参照は10進数と16進数では...
-
一般のソフトで画像を扱う場合...
-
情報科学の飽和演算、ラップア...
-
エクセルVBAのIf,Then 構...
-
符号無し整数xを右にnビット回転
-
C言語やC++言語でビット毎に値...
-
アクセス(2003)のVBAでビット...
-
verilog 符号付加減算(最上位...
-
浮動小数点数の内部表現につい...
-
命令について
-
visualbasic のコード中で 100...
-
スロースキャンコンピュータ 加...
-
16ビットCPUで32ビットの計算方法
-
整数除算の意味とは?
おすすめ情報