で異なるx = 31または32のJavaでは、次の2つの演算が異なる結果をもたらすのはなぜですか?x=3と同じ結果になりますか? int x=3;
int b = (int) Math.pow(2,x);
int c = 1<<x;
結果: x=32: b=2147483647; c=1;
x=31: b=2147483647; c=-2147483648;
x=3: b=8 ;
質問タイトルが読み取ると、2^31を符号付きおよび符号なし32ビット整数変数に割り当てると、予期しない結果が得られます。ここで は、私は何が起こっているのか確認するために作られた、(C++中)のショートプログラムです: #include <cstdio>
using namespace std;
int main()
{
unsigned long long n = 1<<31;
マスキングまたは整数から個々のビットを抽出することを扱う操作のいずれかを実行ビット演算子はエンディアンに依存しますか?私はいくつかのコードを書いたことがありますが、あるタイプのハードウェアにしかアクセスできない場合、演算子がエンディアンに依存しないことを実際に確認することはできません。バグがあれば教えてください。注:このコードは宿題の問題のために書かれた、と個人的な啓発された:あなたの助けを vo