2017-04-09 10 views
1

私は初心者ですから、単純なC言語コードを実装しようとしています。
私はバッファー8ビットサイズで最初にORオペレーションを使用しています。次に、シフト右操作を適用します。
何か変わったことがありましたが、時々シフトが1で加算されない0 &場合によっては0が正しく加算されます。なぜ操作を1でシフトしないのですか?

マイコード:

char buffer[0]={0x7e}; 
int bitsetcounter; 
int bitCounter; 
int s=1; 

int main() { 
    if (s=1) { 
     buffer[0]=buffer[0]|0x80; 
     bitsetcounter++; 
     bitCounter++; 
    } 

    buffer[0] >>=1; 
    printf("the buffer is %x",buffer[0]& 0xff); 
} 

出力>>バッファがFFです。 ここでそのような出力はなぜですか?私は7Fを持っている必要があります。

+0

依存しているあなたは、おそらく '代入' = 'と平等のための比較の違いを学ぶ必要があります= = '。 –

+2

'char'はおそらくあなたのプラットフォームで署名されているので、おそらく負の数を右シフトします(これは許されません)。 –

+0

ohhh私はそれを非常に感謝しました:) –

答えて

1

unsigned char buffer[0]={0x7e}; 

しかし、まだ>>演算子と

char buffer[0]={0x7e}; 

を交換プラットフォーム

関連する問題