
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
値が0以上の場合に限定です。
例として8ビットの数値で考えてみます。
偶数なのでシフト前のビットは"①②③④⑤⑥⑦0"になっているはずです。(①~⑦は1又は0のどちらかのビット状態とする)
右に1ビット算術シフトすると"0①②③④⑤⑥⑦"になります。
シフト結果のビットを2倍すると、シフト前と同じになることが証明できれば良いので、
シフト結果のビットを2倍します。筆算で行います。
①②③④⑤⑥⑦・・・・シフト結果
X10・・・・2(2進数の10)
---------
0000000・・・・2の0乗
①②③④⑤⑥⑦ ・・・・2の1乗
------------
①②③④⑤⑥⑦0・・・・2倍した結果
よって、シフト前と同じ値になることが証明されました。
No.2
- 回答日時:
うーん、この辺参考になるかしらん。
ソフトウェア基礎技術研修-3:
http://ocw.kyushu-u.ac.jp/menu/faculty/09/4/3.pdf
例えば、nビットで符号つき2進数で表現出来るxを
x = ((-2)^(n-1)) * a_{n-1} + Σ(2^k)*a_k ... k = 0〜n-2
と表現して、偶数なのでx mod 2 = 0が前提となる。
右シフトした数yは
y = ((-2)^(n-2)) * a_{n-2} + Σ(2^k)*a_k ... k = 0〜n-3
なので、yをちょっと弄っていけば1/2*xに落ち着いて、終了、とか言うカンジですかね?
No.1
- 回答日時:
えええええ・・・「証明する」の?
当たり前だと思ってた事を「証明する」ってのは難しいなぁ・・・。
そもそも2進数なんで、桁数が上がれば「2倍」になるわけですよ。自然に。っつー事は桁数が下がれば1/2ですよね。「算術シフト」とかつや~な言い方せんでも「そうならざるを得ない」。
そうならざるを得ない事を「証明しろ」・・・・どないすんねん。
"1" # 1
"10" # 2
"100" # 4
"1000" # 8
"10000" # 16
"100000" # 32
"1000000" # 64
"10000000" # 128
"100000000" # 256
眺めてみれば「でしょ?」
10進数でも桁数上がれば10倍になる・・・っつーか逆に、基本の数「1」の10倍になった時に桁数が上がるのを「10進数」って定義してるわけね(n桁上がれば10^n倍になる)。同じ論法が2進数にも適用される・・・基本の数「1」の2倍になった時に桁数が上がるのを「2進数」としてるわけですよ。従って桁数がn個上がれば基本の数の2^n倍になる。当たり前(逆も考えてみよう)。
その「当たり前の仕組み」を証明する・・・無理なんじゃね(笑)。どうなんだろ。
この回答へのお礼
お礼日時:2020/09/03 17:58
回答ありがとうございますーー!!
そうなんです。
私もなぜそうなるのかはわかるんですけど、証明問題が出て解けなくて困ってます。。。泣
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
C言語をコンパイルするとコンピ...
-
VisualStudioでC++クラスを追加...
-
スタックフレームの消滅
-
大量のデータを読み込んで表示...
-
プログラム言語について c言語...
-
インクリメント演算子のみを用...
-
C言語 配列と関数の練習問題
-
C言語の関数と配列に関する質問
-
VisualStudio2022でC言語プログ...
-
C++でデスクトップGUIアプリ開...
-
C言語って古いですか?
-
必ずyou bet と表示されます
-
C言語
-
C言語の関数のextern宣言
-
Cのプログラムからアクセスでき...
-
UART通信の取説で,left floati...
-
あんまり考えたくないけど
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
「ひまわり」と「なでしこ」の違い
-
[VBS] 素早くローテート演算したい
-
一般のソフトで画像を扱う場合...
-
文字参照は10進数と16進数では...
-
アセンブラプログラムの「数値...
-
x86のJP命令について。
-
命令について
-
VB.net
-
03分22秒36のような時間の単位...
-
verilog 符号付加減算(最上位...
-
e(自然対数の底)を100桁以上出...
-
代入の書き方で質問です。
-
マイクロコンピューター制御の...
-
光コンピュータについて
-
アセンブリの論理演算命令のCPL...
-
符号無し整数xを右にnビット回転
おすすめ情報