2016-07-28 7 views
0

私にはintがあり、その値を最上位8ビットに書きたいと思います。たとえば、値89が10110010 00000000MSBでの書き出し16 reg

なるべきこれは私がそれを行う方法です。

valueToWrite = myVal << 8 | valuetToWrite & 0xf; 

私は元の値を読み戻すことができますどのように?

+0

申し訳ありませんが、あなたは正しいです。私は署名付きだが署名なしで書くことを考えていた。ポストポストが変更されました – Josef

+0

なぜあなたは '&0xf'をやっていますか? – Jesper

答えて

0

左シフト(<<)後に元の値を読み戻すには、単に右に値を戻します。

myVal = valueToWrite >>> 8; 

>>>演算子は、値を右シフトし、最上位ビットにゼロを通過します。

+0

Hm ...非常に奇妙な...私はビット8から15までの値156を書いています。サンプルを試してみると、返される値は16 777 116です。 – Josef

+0

私はあなたの質問で 'valueToWrite'あまり正確ではありません。まず第一に、あなたは8つではなく9つの場所の合計89をシフトしたままにしているように見えます。ビットワイズの2番目の項で興味深い再帰があります。何を試してみましたか? [Here](https://gist.github.com/c139d1b19d0ccad3335a918bae344d3c)は、私が話していることのデモンストレーションです。 – gobernador