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を持っている必要があります。
依存しているあなたは、おそらく '代入' = 'と平等のための比較の違いを学ぶ必要があります= = '。 –
'char'はおそらくあなたのプラットフォームで署名されているので、おそらく負の数を右シフトします(これは許されません)。 –
ohhh私はそれを非常に感謝しました:) –