投稿者 |
メッセージ |
|
< PHPプログラミング ~ ビット演算子 |
|
時間:
土 3月 11, 2006 8:42 pm
|
|
|
|
テキストによれば、ビット演算子「〜」は「否定」であり、
「$aにセットされているビットはセットせず、そうでないものは
逆にする」とあります。---(1)
また、別のテキストには「ビットを反転させ、1を加えたものを
絶対値として、符号を反転させる」とあります。---(2)
$a=5の時2進数表記では「101」となりますが、
(1)によれば010で「2」
(2)によれば、
101->010->011->10進数で絶対値3、符号反転で「-3」
となるのではないかと思いますが、答えは「-6」。
考え方のどこが間違っているんでしょうか? |
|
|
|
|
|
|
|
時間:
月 3月 13, 2006 10:31 am
|
|
|
|
マニュアルの演算子部分を読んで動作を実際に検証してみることをおすすめします |
|
|
|
|
|
|
|
時間:
月 3月 13, 2006 9:49 pm
|
|
|
|
ゲストさん、コメントありがとうございました。
「補数」で検索してみたら、分かった(ような気がします)。
4ビットで考えて、5は「0101」であり、これを反転させると「1010」。
これは10進数で「10」だが、4桁目は正負のビット符号と考えて、もとの
下3桁「101」に1を加えて「110」。これは、絶対値で「6」。よって「-6」。
要するに「否定」をすると、符号反転させて元の数の絶対値に1を加えたものを
絶対値とした数になる、と言うことでしょうか?
結局、これは何をしたことになるんだろう? |
|
|
|
|
|
|
|
時間:
火 3月 14, 2006 9:48 am
|
|
|
|
どういうソースコードで試したのでしょう?
また、何をする目的でビット演算するんでしょうか? |
|
|
|
|
|
|
|
時間:
土 3月 18, 2006 1:22 pm
|
|
|
|
コメントありがとうございました。
コードは「基礎 PHP」(インプレス社)にあった、
<html>
<head><title>bit.php</title></head>
<body>
<?php
$a=5;
print((~$a)."<br>");
?>
</body>
</html>
というものでした。
また、特に何をするという目的もないんですが、このテキストにビット演算子
の説明があり、内容が理解できなかったので質問いたしました。 |
|
|
|
|
|
|
|