C言語関係掲示板

過去ログ

No.133.turn=!turnの「=!」とturn^1の「^」


No.834

演算子について
投稿者---アダプタ(2002/01/14 19:05:41)


オセロプログラムを作ってもらったのですが、そのプログラムについてです。
ある演算子が出てくるのですが、それについてどういう処理が行われるのか?を教えてください。ある演算子とは→turn=!turnの「=!」とturn^1の^(turnはint型の変数)


No.836

Re:演算子について
投稿者---ともじ(2002/01/14 20:18:52)


アダプタさん、こんばんは。

>ある演算子が出てくるのですが、それについてどういう処理が行われるのか?を教えてください。
>ある演算子とは→turn=!turnの「=!」とturn^1の^(turnはint型の変数)

「!」は否定で、
  ビット単位で 0⇒1 1⇒0 の変換を行い、ビットを反転
  させるときに用います。

「^」は排他的論理和で、以下のようにビットとビットの演算を行います。
   0 ^ 0 ⇒ 0
   0 ^ 1 ⇒ 1
   1 ^ 0 ⇒ 1
   1 ^ 1 ⇒ 0 
  これは、特定ビットを反転させるときによく用います。
  例えば、
   10101010(2)
  ^ 00001111(2)
  --------------
   10100101(2)
  となり、下位4ビットだけ反転させることができます。

   

No.837

Re:演算子について
投稿者---kikk(2002/01/14 23:39:24)


ども。


>>ある演算子とは→turn=!turnの「=!」とturn^1の^(turnはint型の変数)

意味的にはturn=(!turn)であり、「=!」という演算子があるわけでは
ありません。

>「!」は否定で、
>  ビット単位で 0⇒1 1⇒0 の変換を行い、ビットを反転
>  させるときに用います。

ビット反転(1の補数)は!ではなく~です。
!は論理否定で、0を1に、(1を含む)非零を0にします。

なお。
!turnとturn^1はturnが0か1しかとらないのであれば同じ値になります。
# 名前から察するにturnは先手か後手かを保持する変数でしょうか


では。

No.838

Re:演算子について
投稿者---ともじ(2002/01/15 00:09:03)


>ビット反転(1の補数)は!ではなく~です。
>!は論理否定で、0を1に、(1を含む)非零を0にします。

すみません、間違えました。
ビット演算子ではなく論理演算子です。
勘違いです。ご容赦を。

No.841

Re:演算子について
投稿者---アダプタ(2002/01/15 18:19:08)


>ども。
>
>
>>>ある演算子とは→turn=!turnの「=!」とturn^1の^(turnはint型の変数)
>
>意味的にはturn=(!turn)であり、「=!」という演算子があるわけでは
>ありません。
>
>>「!」は否定で、
>>  ビット単位で 0⇒1 1⇒0 の変換を行い、ビットを反転
>>  させるときに用います。
>
>ビット反転(1の補数)は!ではなく~です。
>!は論理否定で、0を1に、(1を含む)非零を0にします。
>
>なお。
>!turnとturn^1はturnが0か1しかとらないのであれば同じ値になります。
># 名前から察するにturnは先手か後手かを保持する変数でしょうか
>
>
>では。

>kikkさん、ともじさんありがとうございました。おかげで大変よくわかりました。これでフローチャートも書くことが出来るので、演習は終わりに一歩近づけます。

戻る


「初心者のためのポイント学習C言語」 Last modified:2002.02.03
Copyright(c) 2000-2002 TOMOJI All Rights Reserved