私にはint
があり、その値を最上位8ビットに書きたいと思います。たとえば、値89が10110010 00000000
MSBでの書き出し16 reg
なるべきこれは私がそれを行う方法です。
valueToWrite = myVal << 8 | valuetToWrite & 0xf;
私は元の値を読み戻すことができますどのように?
私にはint
があり、その値を最上位8ビットに書きたいと思います。たとえば、値89が10110010 00000000
MSBでの書き出し16 reg
なるべきこれは私がそれを行う方法です。
valueToWrite = myVal << 8 | valuetToWrite & 0xf;
私は元の値を読み戻すことができますどのように?
左シフト(<<
)後に元の値を読み戻すには、単に右に値を戻します。
myVal = valueToWrite >>> 8;
>>>
演算子は、値を右シフトし、最上位ビットにゼロを通過します。
Hm ...非常に奇妙な...私はビット8から15までの値156を書いています。サンプルを試してみると、返される値は16 777 116です。 – Josef
私はあなたの質問で 'valueToWrite'あまり正確ではありません。まず第一に、あなたは8つではなく9つの場所の合計89をシフトしたままにしているように見えます。ビットワイズの2番目の項で興味深い再帰があります。何を試してみましたか? [Here](https://gist.github.com/c139d1b19d0ccad3335a918bae344d3c)は、私が話していることのデモンストレーションです。 – gobernador
申し訳ありませんが、あなたは正しいです。私は署名付きだが署名なしで書くことを考えていた。ポストポストが変更されました – Josef
なぜあなたは '&0xf'をやっていますか? – Jesper