投稿者 メッセージ
<  PHPプログラミング  ~  ビット演算子
727
投稿1時間: 土 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」。

考え方のどこが間違っているんでしょうか?
トップに移動
ゲスト
投稿1時間: 月 3月 13, 2006 10:31 am  引用






マニュアルの演算子部分を読んで動作を実際に検証してみることをおすすめします
トップに移動
727
投稿1時間: 月 3月 13, 2006 9:49 pm  引用



登録日: 2006年3月 11日
投稿記事: 2

ゲストさん、コメントありがとうございました。
「補数」で検索してみたら、分かった(ような気がします)。

4ビットで考えて、5は「0101」であり、これを反転させると「1010」。
これは10進数で「10」だが、4桁目は正負のビット符号と考えて、もとの
下3桁「101」に1を加えて「110」。これは、絶対値で「6」。よって「-6」。

要するに「否定」をすると、符号反転させて元の数の絶対値に1を加えたものを
絶対値とした数になる、と言うことでしょうか?

結局、これは何をしたことになるんだろう?
トップに移動
ユーザー情報を表示 メッセージを送信
ゲスト
投稿1時間: 火 3月 14, 2006 9:48 am  引用






どういうソースコードで試したのでしょう?
また、何をする目的でビット演算するんでしょうか?
トップに移動
727
投稿1時間: 土 3月 18, 2006 1:22 pm  引用



登録日: 2006年3月 11日
投稿記事: 2

コメントありがとうございました。

コードは「基礎 PHP」(インプレス社)にあった、
<html>
<head><title>bit.php</title></head>
<body>
<?php
$a=5;
print((~$a)."<br>");
?>
</body>
</html>
というものでした。

また、特に何をするという目的もないんですが、このテキストにビット演算子
の説明があり、内容が理解できなかったので質問いたしました。
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.