この記事では、Javaで2つの数値を加算するという、シンプルでありながら重要な概念を紹介します。ただし、先に進む前に、「Javaとは」、Javaの機能、および以前に見つけたJavaをシステムにインストールする方法について理解しておくことをお勧めします。 。これにより、今後の概念をすばやく簡単に把握できます。このJavaチュートリアルシリーズの他のブログは、 専門家は、JavaとJ2EEのすべての重要なトピックを詳細にカバーします。
この記事では、次のポイントについて説明します。
それでは始めましょう、
Javaでの2つの数値の追加
方法1
「2つの数字の足し算」を画面に出力するプログラムをJavaで開発して、直接理解しましょう。
クラスAddTwoNumbers {public static void main(String [] args){System.out.println(“ 2つの数値の加算10+ 20 is” +(10 + 20))}}
出力
これを理解する必要があります。ここでは、数字が直接追加され、10 + 20、つまり30です。しかし、コンソールから数字を取得するものです。その場合、値は変数に格納されます。 Javaに関しては、String配列変数は、インデックスに基づいてこれらの数値を格納します。
public class Main {public static void main(String [] args){System.out.println( '2つの数値の加算' + args [0] + '+' + args [1] + 'is' +(args [0 ] + args [1]))}}
このための出力は、10と20の同じ数値を渡すと、コンソールに表示されるようになります。
ええと、ここで得られた結果は望ましくありません30。String[]引数を覚えておいてください。コンソールから取得するすべての入力は、文字列で表されます。したがって、ここでは、これらの文字列を整数に変換して、加算を計算する必要があります。
public class Main {public static void main(String [] args){// System.out.println( '2つの数値の加算' + args [0] + '+' + args [1] + 'is' +(args [0] + args [1]))System.out.println( '2つの数値の加算' + args [0] + '+' + args [1] + 'は' +(Integer.parseInt(args [0] )+ Integer.parseInt(args [1])))}}
出力
これで、目的の出力が必要になります。つまり、文字列から整数に解析した後、10と20の加算は30になります。
Javaでの2つの数値の加算に関するこの記事の次の記事
方法2
減算演算子の使用:減算を使用して2つの数値を加算すると、負の値が無効になり、加算されます。
public class AddTwoNumbers {public static int add(int a、int b){return a –(-b)} public static void main(String [] args){System.out.println(add(10、20))System。 out.println(add(-10、20))}}
Ouput
30
10
Javaでの2つの数値の加算に関するこの記事の次の記事
繰り返される単項演算子
これにはwhileループが含まれますが、この背後にある基本的な考え方は、第1オペランドの値をゼロにすることです。そして、同じ回数の反復で、対応する第2オペランドを継続的に強調します。以下の例を自分で考えてみてください。
public class HelloWorld {public static void main(String [] args){System.out.println( 'add' + add(10、20))System.out.println( 'add' + add(-10、20)) } public static int add(int a、int b){// System.out.println( '--->' + a + ':' + b)while(a> 0){// System.out.println ( 'while a> 0 --->' + a + ':' + b)b ++ a--} while(a<0) { //System.out.println('while a ' + a + ' : ' + b) b-- a++ } //System.out.println('return b--->'+ a +': '+ b)return b}}
Ouput
$ javac HelloWorld.java $ java -Xmx128M -Xms16M HelloWorld add 30 add 10
Javaのビット単位およびビットシフト演算子
XORビット演算子を使用して2つの整数を加算することもでき、AND演算子を使用してキャリーを取得できます。キャリーを合計に追加するには、符号付き左シフト演算子を使用する必要があります。これはどのように起こりますか?最初に例を見てみましょう。
public class HelloWorld {public static void main(String [] args){System.out.println( 'Addition using + ve' + addUsingBits(10、20))System.out.println( 'Addition using -ve' + addUsingBits( -10、20))} public static int addUsingBits(int a、int b){while(b!= 0){intキャリー=(a&b)a = a ^ bb =キャリー<< 1 } return a } }
出力
$ javac HelloWorld.java
$ java -Xmx128M -Xms16M HelloWorld
+ ve30を使用した加算
-ve10を使用した加算
XOR演算は2ビットの加算を評価するために使用されることを常に覚えておいてください。 AND演算は、2ビットのキャリーを評価するために使用されます。これを分析しましょう。入力値に従って、最初の条件としてa = 10およびb = 20を取りましょう。
操作 | 式の評価 | 同等のバイナリ | 10進値 |
に | 10 | 00001010 | 10 |
b | 20 | 00010100 | 20 |
while(b!= 0) | true | ||
intキャリー=(a&b) | 10&20 | 0 | 0 |
a = a ^ b | 10 ^ 20 | 00011110 | 30 |
b =キャリー<< 1 | 0<< 1 | 0 | 0 |
を返す | 30 | 00011110 | 30 |
ここで、aに対して-10と言う負の入力を取りましょう。以下の表で何が起こるかを調べてみましょう。これにより、キャリーの10進値が負になるまでループできます。
Javaでの2つの数値の加算に関するこの記事の次の記事
初期ループテーブル
操作 | 式の評価 | 同等のバイナリ | 10進値 |
に | -10 | 11110110 | -10 |
b Pythonのdef__init__ | 20 | 00010100 | 20 |
while(b!= 0) | true | ||
intキャリー=(a&b) | -10&20 | 00010100 | 20 |
a = a ^ b | -10 ^ 20 | 11100010 | -30 |
b =キャリー<< 1 | 20<< 1 | 00101000 | 40 |
ループ1。
Javaプログラムの基本構造
操作 | 式の評価 | 同等のバイナリ | 10進値 |
に | -30 | 11100010 | -30 |
b | 40 | 00101000 | 40 |
while(b!= 0) | true | ||
intキャリー=(a&b) | -30&40 | 00100000 | 32 |
a = a ^ b | -30 ^ 40 | 11001010 | -54 |
b =キャリー<< 1 | 32<< 1 | 00101000 | 64 |
簡潔にするためにループがb = 0になるまで続けて、すべての結果がここに表示されるわけではありません。したがって、以下の表は、この操作の最後のループを表しています。
操作 | 式の評価 | 同等のバイナリ | 10進値 |
に | -2147483638 | 111111111111111111111111111110000000000000000000000000001010 | -2147483638 |
b | -2147483648 | 111111111111111111111111111110000000000000000000000000000000 | -2147483648 |
while(b!= 0) | true | ||
intキャリー=(a&b) | -2147483638&-2147483648 | 111111111111111111111111111110000000000000000000000000000000 | -2147483648 |
a = a ^ b | -2147483638 ^ -2147483648 | 00001010 | 10 |
b =キャリー<< 1 | -2147483648<< 1 | 0 | 0 |
を返す | 10 | 00001010 | 10 |
これが加算の計算方法です。ふぅ!考えはこれだけです。この計算が人間によって手動で行われた場合、主にバイナリ計算であると考えてください。
Javaでの2つの数値の加算に関するこの記事の次の記事
再帰
上記のプログラムは、再帰を使用して作成することもできます。計算部分が少し違いますので、宿題として考えてみましょう。ここで再帰の抜粋を示します。内部でどのように機能するかがわかるように、独自のテーブルを作成してみてください。また、ここでの内部動作に興奮していない限り、表現目的のためだけにこれらすべてをマグカップする必要はありません。
public static int addUsingRecursion(int a、int b){if(b == 0)return a int sum = a ^ b intキャリー=(a&b)<< 1 return add(sum, carry) }
これはすべて、Javaで+演算子を使用し、+演算子を使用せずに2つの数値を加算するためのものでした。これらのいずれかを選択する理由は、プロジェクトのニーズと要件に完全に依存します。
パフォーマンスを考え出すために、両方のシナリオの動作を評価およびテストしていません。それは、ロケットを作って宇宙に届ける場合にのみ有効になると思います。
簡潔にするために、独自のメモリ制限がある整数に関連する数値のみを説明しました。 float、doubleなどを使用してさらに調査するのはあなたに任せます。プリミティブ型の制限値を超えると、結果が異なる答えを示すことを常に覚えておいてください。
チェックしてください 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。私たちはあなたの旅のすべてのステップであなたを助けるためにここにいます、あなたの最高になるために、私たちはJava開発者になりたい学生と専門家のために設計されたカリキュラムを考え出します。