
No.1ベストアンサー
- 回答日時:
import java.util.Scanner;
// 正直、「解けたから何?」って程度の問題
// こんなの解けてもプログラミングには役に立たない
// トリビア程度、である
// 教えてる人間のレベルが知れるし、こんなんやっててもプログラミングは上達せんだろう(そもそもJavaでやるような事か?)
// 可愛そうなのはつき合わされてる生徒である
// あまりにもくだらないレベルの問題なんで解説なんざしない
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("適当なメッセージ");
int A = scanner.nextInt();
int A0 = A << 3;
int A1 = A << 1;
System.out.println(A + "×10=" + A + "×(8+2)=" + A + "×8+" + A + "×2=" + (A0|A1));
}
}
No.2
- 回答日時:
> なぜそうなるかは自分なりに調べて考えてみますありがとうございます!
良い心がけ、です。
ただし、そんなに「考えてみます」ってほどの問題じゃないです。
> ほとんど答え書いているようなものじゃないか
その通り、だからです。
ただし、実は
> ・A×10=A×(8+2)=A×8+A×2
の意味が分かってない、って事でしょ。
いや、この意味は小学生でも分かるんだけど、「シフト」との関連性が分からん、と。
例えばね。二進数で
0001
ってのは1である、と。
ここで左シフトってのは全体を一つ左にズラす事です。
0010
これは2ですよね。つまり元の数の2倍である、と。
もういっちょ左シフトをかます。
0100
これは4です。と言う事は元の数の4倍になっています。
そして「2つ左にシフトした」って事は2^2かけた、ってのと同義になってるのは分かるでしょうか?
つまり、一般的には
・n個左シフトする <= 同義 => 2^n 掛ける
の関係がある。これを確かめてみて下さい。
例えば、二進数で3は
0011
ですが、二回左シフトすれば
1100
です。これは12で、3 * 2^2なわけで2^2の部分に注目すると確かに2左シフトしてる、って結果と一致しています。
いくつかこうやって実値で調べてみて下さい。そうすれば納得行くと思います。
と言う事は。左シフトで2の累乗は掛けられるけど生憎10は掛けられない。
だから次の式を持ってきたわけです。
・A×10=A×(8+2)=A×8+A×2
要するに「掛ける10」ってのを「2の累乗だけで書き記すにはどうすれば良いのか」。その解が上の式なのです。
つまり、
・A×8+A×2
ってのは
・A × 2^3 + A × 2^1
って事。要するに
・ A×10 = A × 2^3 + A × 2^1
と書ける。
と言う事は「なんかの10倍」ってのは「なんかを3回左シフトしたモノとなんかを1回左シフトしたものの合計」だ、って事。
従ってそれをそのままプログラミングすればいいわけです。それだけ。
でも無駄でしょ?
「ははぁなるほど」
かもしれんけど「へぇへぇへぇ」でしかなく、だからトリビアなんですよ。
そもそもこれがメンド臭いんで我々は高級言語を使ってるわけで。
これを一々やらなアカンのだったら高級言語を使っている意味がないのです。
だからくだらん、と。
そういう事です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
一般のソフトで画像を扱う場合...
-
C言語で128bitの2進数のビット...
-
文字参照は10進数と16進数では...
-
信号のビット数制限、って出来...
-
エクセルVBAのIf,Then 構...
-
ビットシフトってどんな時使うの?
-
verilog 符号付加減算(最上位...
-
ビット列を表示するプログラム
-
プログラム言語
-
ライン数とステップ数の違いは?
-
PIC16F84AのデバイスでC言語を...
-
【H8マイコン】HEWで埋め込みア...
-
PIC16F1シリーズマイコンのNCO...
-
PICはアセンブラとC言語のどち...
-
素数を求めるプログラム(アセン...
-
非常に限定された条件での8バイ...
-
CPUは何故、16bit→32bit→64bit...
-
トリムレジスタ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
シーケンス制御についての質問...
-
C言語で128bitの2進数のビット...
-
一般のソフトで画像を扱う場合...
-
ビットシフトってどんな時使うの?
-
エクセルVBAのIf,Then 構...
-
16ビットCPUで32ビットの計算方法
-
Javaの問題について
-
03分22秒36のような時間の単位...
-
2の補数
-
verilog 符号付加減算(最上位...
-
命令について
-
A4 持ち込み
-
スロースキャンコンピュータ 加...
-
ビット演算子
-
この画像の命令「CMP k300 D0 M...
-
C言語やC++言語でビット毎に値...
-
ギルバートモデルの、ビット誤...
-
3進数を10進数に変換
おすすめ情報