1. ホーム
  2. algorithm

[解決済み] 整数の絶対値の計算方法

2022-02-07 17:22:19

質問

を使わずに整数の絶対値を計算するには? if の条件を満たす必要があります。 ビット演算が必要なのでしょう。 どなたか教えてください。

どのように解決するのですか?

  1. 整数を31だけ右シフトしたマスクを設定します(整数は2補32ビット値として格納され、右シフト演算子は符号拡張を行うと仮定します)。

    mask = n>>31 
    
    
  2. マスクと数値のXOR

    mask ^ n 
    
    
  3. 手順2の結果からマスクを引き、その結果を返す。

    (mask^n) - mask