タグ付けされた質問 「negative-number」

18
符号付きの数値に対して、符号と絶対値よりも2の補数を好むのはなぜですか?
-1を2進数で表すために、2の補数が使用される理由があるかどうか知りたいだけです。ビットを反転して1を追加しますか? -1は、10000001ではなく11111111(2の補数)で表されます。これは、最初のビットが負のフラグであるバイナリ1である10000001です。 免責事項:私は自分の仕事のためにバイナリ算術に依存していません!

20
負の数を正にします
一連の数値を合計するJavaメソッドがあります。ただし、負の数値はすべて正として扱われるようにします。したがって、(1)+(2)+(1)+(-1)は5になります。 これを行うには非常に簡単な方法があると確信しています-方法がわかりません。


7
0と-0を区別することは可能ですか?
整数値0と-0は基本的に同じであることを知っています。しかし、それらを区別することは可能かどうか疑問に思っています。 たとえば、変数が割り当てられた-0かどうかはどうすればわかりますか? bool IsNegative(int num) { // How ? } int num = -0; int additinon = 5; num += (IsNegative(num)) ? -addition : addition; -0メモリに保存された値はとまったく同じ方法0ですか?



3
最も負のint値は、あいまいな関数のオーバーロードに関するエラーを引き起こすのはなぜですか?
私はC ++での関数のオーバーロードについて学び、これに遭遇しました: void display(int a) { cout << "int" << endl; } void display(unsigned a) { cout << "unsigned" << endl; } int main() { int i = -2147483648; cout << i << endl; //will display -2147483648 display(-2147483648); } 私が理解したことから、int範囲(私の場合intは4バイト)で指定された値は呼び出されdisplay(int)、この範囲外の値はあいまいになります(コンパイラーが呼び出す関数を決定できないため)。これはint、最小値を除くすべての値の範囲、つまり-2147483648エラーでコンパイルが失敗する場合に有効です。 オーバーロードの呼び出しdisplay(long int)があいまいです しかし、同じ値をに取り、その値を出力するintと、になります2147483648。私は文字通りこの振る舞いに混乱しています。 この動作は、最も負の数が渡されたときにのみ観察されるのはなぜですか?(a shortが-32768- と一緒に使用された場合の動作は同じです。実際には、負の数と正の数が同じ2進数表現を持つ場合) 使用するコンパイラ:g ++(GCC)4.8.5

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.