問題タブ [ones-complement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - このコードは、C で「 int x = ~!printf; 」とはどういう意味ですか?
それは与える: -1 ffff
誰でも説明できますか?
c - Fletcher チェックサム: modulo-255 の合計は、1 の補数の合計と本当に同じですか?
私の質問の簡単な背景: 私は、UART 経由で PC と通信するマイクロコントローラーを使用した小さな趣味のプロジェクトに取り組んでいます。現在、0x00 パケット区切りバイトと、2 の補数の合計または 1 の補数の合計である単純な 1 バイトのチェックサムを使用した COBS バイト スタッフィングを使用しています。私の補数チェックサムの実装は、インターネットのチェックサムと非常によく似ています(7 ページ。興味深い部分を以下に示します)。
数日前、私は Fletcher チェックサムについて知りました:
Fletcher の記事
Fletcher の実装
Fletcher Wikipedia
Fletcher Wiki ページからの短いコード スニペット:
私の質問:上記の両方の記事で、フレッチャーは「1 の補数 [mod(255)] チェックサム」を mod-255 と 1 の補数の合計が同じであるかのように使用していると述べています。それは本当に本当ですか?
- 1 の補数チェックサムを優れたものにするキャリー ビットが、上記の 1 の補数加算器と比較して mod-255 の合計でほぼ同じように機能することは、私には理にかなっています。しかし、mod-255 の合計では、値 0xFF (-0) を取得することはできず、0x00 (+0) のみを取得できますか?
- mod-operatorの方が遅いと思います(ただし、線形であるため、合計が終了するまでmod計算を待つことができます)。
- (COBS を使用する場合の) 優れた機能は、mod-255 の合計が 0xFF になることはあり得ないため、mod-255 が 0x00 チェック バイトを生成しないことです (ただし、上記の 1 の補数加算器でも簡単に修正できます)。
お時間をいただきありがとうございました!
敬具/ヘンリック
bit-manipulation - 基数 -2 で表される最大の負の数の大きさが、表される最大の正の数の 2 倍であるのはなぜですか?
ここで、「単語のビット数が偶数の場合、表現できる最大の負の数の大きさは、表現できる最大の正の数の 2 倍の大きさであり、単語のビット数が奇数の場合はその逆です。ビットの。」
何度も読み直しても、よくわかりません。例を挙げて説明していただけますか?また、その逆の部分についても。
c - 私の補完コードをはるかに効率的にし、一度に複数の出力を可能にする方法はありますか?
入力としてディップ スイッチを使用し、出力として LED を使用して、任意の入力の補数に似せています。それを試みるためにArduino Unoをプログラミングしています。また、ビットごとの効率についてもあまり経験がありません。私のコードの行を大幅に減らす方法はありますか?
私が現在持っているのは、一連のifステートメントです。
また、私が抱えている別の問題は、一度に 1 つの LED しかオフにならないことです。1 つのスイッチを切り替えてから別のスイッチを切り替えた場合、最初に切り替えたスイッチの LED は、もう一方のスイッチを切り替えるとすぐにオンに戻ります。