2 を掛けると指数が 1 増えると思うなら、考え直してください。IEEE 754 浮動小数点演算で考えられるケースは次のとおりです。
ケース 1: 無限大と NaN は変更されません。
ケース 2: 指数を増やし、符号ビットを除く仮数部を 0 に設定することにより、可能な限り最大の指数を持つ浮動小数点数を無限大に変更します。
ケース 3: 指数が可能な最大指数より小さい正規化された浮動小数点数は、指数が 1 増加します。ヤッピー!!!
ケース 4: 最上位の仮数ビットが設定された非正規化浮動小数点数は、指数が 1 増加し、正規化された数値になります。
ケース 5: 最大仮数ビットがクリアされた非正規化浮動小数点数 (+0 と -0 を含む) は、仮数が 1 ビット位置だけ左にシフトされ、指数は変更されません。
これらすべてのケースを正しく処理する整数コードを生成するコンパイラが、プロセッサに組み込まれた浮動小数点と同じくらい高速になるとは思えません。また、2.0 による乗算にのみ適しています。4.0 または 0.5 による乗算には、まったく新しい一連のルールが適用されます。また、2.0 による乗算の場合、x * 2.0 を x + x に置き換えようとする場合があり、多くのコンパイラがこれを行っています。つまり、プロセッサは、たとえば、1 つの加算と 1 つの乗算を同時に実行できますが、それぞれの種類を 1 つずつ実行できない可能性があるためです。そのため、他の操作を同時に行う必要があるかどうかに応じて、x * 2.0 を好む場合もあれば、x + x を好む場合もあります。