回答
假設你的意思是最左邊的位,位,並將其與0x80的,並檢查它是否是零,也沒有:
public boolean isFirstBitSet(byte b) {
System.out.println((b & (byte)0x80));
return (b & (byte)0x80) < 0;
}
如果你的意思是最低階位,你將需要與0×01,檢查不同的條件:
public boolean isFirstBitSet(byte b) {
System.out.println((b & (byte)0x01));
return (b & (byte)0x80) > 0;
}
如果第一位是最低位(即0位),然後
if((m & 1) >0) ...
應該這樣做。
一般來說,
if ((m & (1<<N)) > 0) ...
會給你是否有點N
設置。 但是,如果您的意思是最高位(第7位),則使用N = 7。
這取決於你的意思是「第一位」。如果你的意思是「最顯著位」,你可以使用:
// 0 or 1
int msb = (m & 0xff) >> 7;
或者,如果你不介意的值是0x80的或0,只需使用:
// 0 or 0x80
int msb = m & 0x80;
或事實上,作爲一個boolean
:
如果你指的是至少顯著位,你可以使用:
// 0 or 1
int lsb = m & 1;
這是最重要的一點。感謝您的幫助 –
@Jon我不明白第一個爲什麼它是'0xff'? 「0x80」就夠了。我認爲正確的做法是int msb =(m&0x80)>>> 7;'。 –
@ Eng.Fouad:是的,沒關係。我只是習慣性地通過用0xff掩碼將字節轉換爲int :) –
使用按位和運算符。
public class BitExample {
public static void main(String args[]) throws Exception {
byte m = (byte)0x8C;
System.out.println("The first bit is " + (m & (byte)0x01));
m = (byte)0xFF;
System.out.println("The first bit is " + (m & (byte)0x01));
}
}
// output is...
The first bit is 0
The first bit is 1
它的一個黑客位,但你可以使用
if(x >> -1 != 0) // top bit set.
本工程爲byte
,short
,int
,long
數據類型。
然而,對於大多數類型的最簡單的方法是用0
if (x < 0) // top bit set.
本工程爲byte
,short
,int
,long
,float
,或double
(忽略負零和負NaN的比較,大多數人都這樣做)
對於char
類型您需要知道位數。 ;)
if (ch >>> 15 != 0) // top bit set.
- 1. 找到第二個最高有效位
- 2. 清除/設置/切換最高有效位(MSB)或最低有效位(LSB)有什麼意義?
- 3. 找到最高設置位
- 4. 如何找到多位數字中的最高位?
- 5. 找到64位整數中最大和最小有效位的快速方法
- 6. 如何在組內找到最高值?
- 7. 如何獲得從MSB開始的特定位置的位值?
- 8. 如何高效查找數字範圍的按位或運算
- 9. 顯示MSB到LSB
- 10. 消息文件UTILITY_MEG \ SPW <lang> .msb沒有找到
- 11. 如何有效地找到最後一個鍵和值GTree
- 12. 如何有效地找到最小的正整數?
- 13. 如何有效地找到10個最大的子陣列?
- 14. 查找設置在位數組中的最高位(最左邊)
- 15. 如何找到最沒有在列表中位數蟒蛇
- 16. 2個字節中的最高有效位
- 17. 取消設置一個字中最高有效位(int32)[C]
- 18. 高效地找到多個列的低中位數
- 19. 在SQL如何找到最低和最高值
- 20. 如何找到哈希碼有效性?
- 21. 如何使搜索效率最高?
- 22. 高效的方法來找到最相似的值
- 23. 用numpy高效找到最低的非屏蔽點
- 24. 高效地在大圖中找到最短路徑
- 25. 找到最低和最高的多列
- 26. 如何在表格中找到幾個重複的最高值的位置?
- 27. pyserial python中的MSB(最重要的位)發送到arduino uno在受阻
- 28. 有效地找到對象之間的最高值,並識別對象
- 29. 有效的方法來找到最高JIRA問題ID在一個項目
- 30. 在位陣列中找到'1'的位置有效
「first」是什麼意思,具體是什麼意思? –