• ベストアンサー

if文を使わずに小数の符号を取れるか

taunamlzの回答

  • taunamlz
  • ベストアンサー率20% (175/843)
回答No.2

>if文(とできれば掛け算)を使わずに、変数a(1か-1が入る)と変数b(小数が入る)の符号が違ったらカウントを増やすプログラムを作らないといけないのですが、 これだけならばビットシフトとexorを使えばよいかと。 負の数というのは最上位ビットが1である事を利用すると良いと思います。

hirai2912
質問者

補足

なるほど、ビットシフトを使えば処理を速くできそうです。 変数aはint型なので15ビット右にシフトすればよさそうですが、 double型の変数bは何ビットシフトすればいいのでしょうか。

関連するQ&A

  • if文が通りません

    $dataという変数の中に"----"という値が入っているのですが下記のif文が通りません。 if($data == "----"){ echo "成功"; } echoで"----"の値が出力されるのは確認済みです。 スペースも入っていません。 ちなみにif文の前に$data = "----";と書いて値を代入するとうまくいきます。

    • ベストアンサー
    • PHP
  • perlのif文で・・・・・

    こんにちは。 お聞きしたいのですが、perlのif(A eq B)文で、crypt関数で暗号化した文字列の比較をしているのですが、画面に双方の変数をテスト表示をしてみて、AとBは一致しているにもかかわらず、このif文を飛ばしてしまいます。 暗号化した変数を使うのは初めてなんですが、何か可能性として考えられることはありますか? 自分でも考えられるチェックはしたつもりなんでが・・・

  • C++でランレングス符号化のプログラムを組みたいです。

    C++で、while,if文,char,intでランレングス符号化のプログラムを組みたいです。 たとえば、文字列aabcccと入力するとa2,b1,c3となるようにしたいです。 配列は使わずに、charで変数を二つ用意し、cinで入力、if文で判定しカウントという流れをwhileで繰り返す。そしてEOFで終了というような感じにしたいと思ってます。 よろしくお願いします。

  • IF文での分岐の仕方について

    IFか何かで作成を行いたいのですが、 B2にセルにIF文を作成して、 B1セルがAから始まる値の場合は、AAAAと出力し、 Bから始まる値の場合は、BBBBというように、 Zまで同じように出力するようにしたいのですが、 長文になると思います。 うまくやる方法はないでしょうか。

  • 浮動小数点数型

    単精度浮動小数点型と倍精度浮動小数点数型、それぞれ値がとりうる範囲を教えてください。 単精度浮動小数点型 負の値は -3.4028235E+38 ~ -1.401298E-45、 正の値は 1.401298E-45 ~ 3.4028235E+38 の範囲の値 倍精度浮動小数点数型 負の値は -1.79769313486231570E+308 ~ -4.94065645841246544E-324、 正の値は 4.94065645841246544E-324 ~ 1.79769313486231570E+308 の範囲の値 とは記述してあるのですが、実際に小数1桁なら整数部はどのくらいの範囲の値がとれるのか、皆目わかりません。 どうか、わかりやすく教えてください。 よろしくお願い致します。

  • ハフマン符号のプログラム

     以下の問題に回答できる方,いらっしゃいましたらソースファイルと実行結果を送ってください。  ファァイル(記号列)を読み込んで,ハフマン符号によりファイルを圧縮するプログラム(C言語)を作成する(プログラムは,圧縮を行うものと,解凍を行うものの2つ作る)。また,いくつか適当なファイルに対して,圧縮を行い圧縮率を測定する。 (1)圧縮プログラムについて  圧縮のステップ  (a)入力ファイルを読み込み各記号の出現頻度をカウントする。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)各符号の出現頻度を出力ファイルに書き出す。  (d)もう一度入力ファイルを読み込みながら各符号をハフマン符号で置き換え    て出力ファイルに出力する。圧縮ファイルの形式は次のようになる。   0x00の  0x01の … 0xffの 先頭文字の 2文字目の … 終端文字の   出現頻度 出現頻度 出現頻度 符号語   符号語    符号語    (c)で書きこむ部分      (d)で書きこむ部分 (2)解凍プログラムについて  解凍のステップ  (a)各符号の出現頻度を圧縮ファイルから読み込む。  (b)得られた出現頻度を使って各符号のハフマン符号を生成する。  (c)圧縮ファイルの符号語を読み込みながら各符号のハフマン符号と比較しも    し一致したらその記号を解凍ファイルに出力する。  (d)(c)をファイルの終わりもしくは出現頻度をすべて足し合わせた記号数分処   理するまで繰り返す。  関数について  関数get_bit  ファイルから1bit読み込んで戻り値として返す。  (ファイルポインタはグローバル変数で用意する)  関数put_bit  引数として0,または1を渡すと1bitずつファイルに書き込む。  (ファイルポインタはグローバル変数で用意する)

  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • 負符号と括弧とべき乗にまとめるタイミング

    https://parco1021.hatenablog.com/entry/2020/05/07/225935 の 6.9<ワイブル分布> を解いていて、途中の計算過程を教えて下さい。 自分なりに書き直したものを添付しました。 赤で囲んだところの行間で何が起こっているのかを教えて下さい。 積分を楽にするための工夫なのでしょうが、 前の項を後ろの項のexpのべき乗の値と同じ形にしようとしているようです。 そのために、正符号一つを括弧を隔てて負符号二つに分けなければいけません。 ただ、肩に^bがあるので、bが奇数の場合は…偶数の場合は…と 計算しなければいけないんじゃないかと思ってしまっていて、 どのタイミングで()^bにまとめるのか、 またどのタイミングで-(-t/a)にするのか、分かりません。 どうかお願いします。

  • IF文について

    以下を実現するIF文(又は関数)を教えてほしいのですが・・↓ もし、B2のセルに何か文字が入っていたら、 B1のセルに”○”を表示する。 B2のセルに何も文字が入っていなかったら、何もしない。

  • 浮動小数点の問題です。

    10進数+0.375を浮動小数点で記憶させ、その記憶領域のダンプリストを読み取ると、 0.375は16進数で(1)に、 -1は16進数で(2)となる。 答えは(1)は7F00、(2)8600です。 この2つの問題の途中式と解説をお願いします。 バイト型:バイト数は1バイト,負の補数は2の補数で表す 整数型:バイト数は2バイト,負の補数は2の補数で表す 浮動小数点:バイト数は2バイト,符号1ビット,指数部5ビット,仮数部10ビット ビット番号0:符号部.仮数部の符号が入っている.0なら正,1なら負 ビット番号1-5:指数部.負の値を2の補数で表す ビット番号6-15:仮数部.ビット番号6を小数点第1位とする仮数部の小数点以下の絶対値が、正規化された2進数で入っている 正規化とは,仮数部が2進数で0.1以上1.0未満になるよう指数部を増減する操作である