

こちらを一つずつ、10進数で表したいのですが、ぜんぜんわかりません。  
わかる方教えていただきたいです。

[code]

    15 & 7
    
    6 & 4
    
    9 OR 3
    
    5 OR 10
    
[/code]


CC BY-SA 4.0
2021-03-04T05:00:44.020
74409
2021-03-28T23:39:54.163
2021-03-04T06:40:37.887
3060
44201
question
c
論理演算の結果を10進数で表したい


問題の`9 OR 3`は`9 | 3`の10進数表現を求めているのだと考えました。  
※ C言語のORのビット演算は`|`、ANDのビット演算は`&`です。

考え方は、数値を２進数に基数変換し、１ビットずつ＆(AND)や｜(OR)のビット演算を行ったあと、結果を１０進数に基数変換すればよいと思います。  
答えを知りたいだけなら以下のようにprintfでビット演算結果を表示してみればよいと思います。

[code]

     printf("%d\n", 15&7);
    
[/code]

* * *

【追記しました】

C言語の論理演算の演算子はANDが`&&`、ORが`||`です。  
C言語は整数を真偽値として扱うことができます。  
整数0の真偽値は偽、0以外の整数は真です。評価するときは1でも2でも真ですが、演算結果は1になります。  
2つの整数のうちひとつでも0(偽)ならば論理演算AND(`&&`)の結果は0(偽)で、両方とも0以外のときに結果は1(真)となります。  
整数が両方とも0(偽)ならば論理演算OR(`||`)の結果は0(偽)で、ひとつでも0以外のときに結果は真(1)となります。

ビット演算は1ビットずつの論理演算と考えればよいと思います。

質問に「10進数で表したい」とありましたので勝手にビット演算と考えて回答しましたが、  
「論理演算」と「ビット演算」の違いを理解しておいた方がよいと思い、回答に追記しました。


CC BY-SA 4.0
2021-03-04T05:52:51.147
74413
2021-03-28T23:39:54.163
2021-03-28T23:39:54.163
35558
35558
74409
answer