2016-07-28 28 views
0

我有一個int,我想寫它的值到最重要的8位。例如,值89應該成爲10110010 00000000在MSB上寫入16章

這是我要做的事:

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

我怎麼能讀回原來的價值?

+0

對不起,你是對的。我正在考慮簽名但寫作無符號。帖子發生改變 – Josef

+0

你爲什麼要做'&0xf'? – Jesper

回答

0

爲了回讀左移之後的原始值(<<),只需向右移回數值即可。

myVal = valueToWrite >>> 8; 

>>>運算符將值右移,並將零傳遞到最高有效位。

+0

嗯......非常奇怪......我寫了從第8位到第15位的值156.當我嘗試你的示例時,返回的值是16 777 116. – Josef

+0

我懷疑你在創建'valueToWrite'的問題中描述的方法不是很準確。首先,你似乎已經將總共9個位置移動了89個位置,而不是8個位置,並且在按位或者第二個位置有一個有趣的遞歸。你究竟試過了什麼? [這裏](https://gist.github.com/c139d1b19d0ccad3335a918bae344d3c)是我正在談論的一個示範。 – gobernador