性格悪い人が優勝

12.345などの小数点数をビット演算の論理話で | 0(ゼロ)とすると小数点以下は切り捨てられるという認識で合ってますか?

質問者からの補足コメント

  • 検証するのにお金が必要になるExcelとかも辞めてください

    No.6の回答に寄せられた補足コメントです。 補足日時:2021/08/28 20:33

A 回答 (9件)

たぶんですが、JavaScriptだと、


ビット演算をするときに32ビットの整数値に
変換されてから計算し始めるので、
小数点以下を切り捨てたように見える、
という話ではないかと思います。

参考:
https://developer.mozilla.org/ja/docs/Web/JavaSc …

なので、以下はすべて12が出力されます。

let x = 12.345;
console.log(x & (2^32 -1)); // 12
console.log(x | 0); // 12
console.log(~~x); // 12

あたりまえですが、xが整数なら、
x | 0
の計算結果は、xになります。

このことは、言語の実装次第なので、
No8さんのおっしゃるとおり、
cではタイプエラーになりました。

また、pythonもタイプエラーが出ました。

phpはJSと同じように、
勝手にintegerに変換してくれるようです。

参考:
https://www.php.net/manual/ja/language.operators …
    • good
    • 1

あ, 論理和とビット和を勘違いしてた. ので訂正.



C では 12.345 と 0 の「ビット和」を計算しようとするとエラーになる. Java も同様.

ちなみに「論理和」だと C では計算できるけどその結果は 1. Java ではこれもエラーだ.
    • good
    • 2

少なくとも C では


12.345 と 0 の論理和
は計算できない.
    • good
    • 1

> その構成の説明をお願いします



いや、それは回答者じゃなく、君が説明するんだよ。
説明できなきゃ、今対象としている処理系のマニュアルを調べる。
それが判明した上での、認識が合ってる合ってないだからね。

この回答への補足あり
    • good
    • 0
この回答へのお礼

いや、僕の構成は今は問題ではない
あなたの考える構成でお願いしています
言語は何でも良いですが、わざと意地悪するような真似してマイナーな言語での説明は避けてください
あなたの回答を元にこれから僕自身が調べますので

それができないのであれば僕にとってあなたは無用の回答者でしかないのでお引き取りお願いします

お礼日時:2021/08/28 20:31

>申し訳ありませんが、聞いてもいない能書きを聞くつもりはありません


ああそう、じゃあもういいや。バイバイ

わかってあげられなくてごめんね。でもしょうがないよ、この質問文じゃ
    • good
    • 1
この回答へのお礼

>でもしょうがないよ、この質問文じゃ

そうですね、私が求める知識がなければ理解ができないのも当然だと思います
さようなら

お礼日時:2021/08/28 20:32

それは、10進数の 2進表現のビット構成しだいだな。

    • good
    • 1
この回答へのお礼

その構成の説明をお願いします

お礼日時:2021/08/28 20:14

>少し知識を利用する範囲が私より狭いのかも知れませんね


なに?俺にケンカ売ってんの?

因みに「二進化十進数」で小数点以下も表記する方法なら
有効桁数内なら誤差はでません

二進数のままだと誤差がそれなりにあり続ける
(十進数でいう有効桁数範囲内でも誤差がある)ので
誤差を嫌うならまぁ有効な方法ですよ

>例えば
>3 / 2の小数点を切り捨てなさいという問題がプログラミング言語で出た場合
>多くの場合はfloor関数を使いますが、| 0でもできるのならば
>そちらの方が多少は高速である上にfloorを呼び出し書く手間も省けます
意味不明
それでいいと思ってるならそれれやればいいんじゃないの

>その認識で正解なのかどうかが知りたいだけです
なんか中身違う、しかも意味不明な事を後出しされてもなぁ

その「floor関数」って、excel の関数のことを指してるとは思いますが
中でどういう処理してる前提のハナシですか?
Excel のは扱うのは整数だけじゃなかったっけ?
    • good
    • 0
この回答へのお礼

申し訳ありませんが、聞いてもいない能書きを聞くつもりはありません

>その「floor関数」って、excel の関数のことを指してるとは思いますが

度々申し訳ありません、Excelなんて使えませんしそんな話はしていません

>意味不明

やはり、私とあなたでは知識の活用する場がただ端に違うと言うだけのことですね
意味が理解できなくて当然です

あなたのように能書きだけで的を射ない回答者が多いのであえて質問を複雑にしていないだけです

聞いてもいないことは興味も無いのでどうでも良いです


喧嘩を売っているつもりはありません、ただ端に聞いてもいない能書きに興味がないだけです

不快にさせたならお詫びします

申し訳ありません

お礼日時:2021/08/28 20:12

論理和関係なく



>小数点数を(略) 0(ゼロ)とすると
>小数点以下は切り捨てられるという認識で合ってますか?
もちろんそうなります
何せ切り捨ててゼロにしてるので

・そもそも数値と論理和にする?意味が不明
・小数点以下を二進数で表記する方法はある
    • good
    • 0
この回答へのお礼

>そもそも数値と論理和にする?意味が不明

ありますね
少し知識を利用する範囲が私より狭いのかも知れませんね

例えば
3 / 2の小数点を切り捨てなさいという問題がプログラミング言語で出た場合
多くの場合はfloor関数を使いますが、| 0でもできるのならばそちらの方が多少は高速である上にfloorを呼び出し書く手間も省けます

それに今は、特にプログラミング言語がどうこうと言う話ではなく、その認識で正解なのかどうかが知りたいだけです

お礼日時:2021/08/28 19:44

なんかのプログラム言語でのこと? そうであるなら, プログラム言語を明記しないと話が進まないよ.

    • good
    • 0
この回答へのお礼

どのプログラミング言語かによって答えが変わるのですか?
私が今調べたところによると

C, C++, Python, Java, JavaScript, TypeScript, PHP, Rubyで論理和は全て同じ扱いですよ

もしあなたに答えられるのであれば、これらの言語でお答え願います

お礼日時:2021/08/28 19:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!