[英]How the bits are stored in C++, How to represent similar functionality in Java
我有C ++:
typedef struct _msk {
char abc[4];
//some more variables
}
_msk mr;
if (some condition >= 70) {
mr.abc[0] |= 0xC0; //C0 in binary 11000000
mr.abc[1] |= 0x20; //20 in binary 100000
mr.abc[2] |= 0x44; //44 in binary 1000100
}
在這里或者操作是進行的,之后將存儲該值。 那么在內存中它是否像(0th)11000000(1st)100000(2nd)1000100那樣在陣列中? 在[4]中可以實際存儲多少位(總共0 + 1 + 2 + 3 + 4)。
在Java中:
private BitSet abc = new BitSet(40);
如果需要更新或修改位,我們可以使用bitset類提供的set或get方法。 在java中,如果我們需要執行OR操作,我們需要在后綴中添加0來獲得相同的結果。 我們可以在c ++中避免哪些? 謝謝
那么在內存中它是否像(0th)11000000(1st)100000(2nd)1000100那樣在陣列中?
差不多:(0th)11000000(1st)00100000(2nd)01000100
在[4]中可以實際存儲多少位(總共0 + 1 + 2 + 3 + 4)。
不是0 + ... + 4,而是0 + ... + 3,4個大小為8位的字符= 32位(索引:0,1,2,3)
你仍然可以使用Java中的按位運算符 - 不完全確定你對Java代碼的要求是什么?
因為你使用的是|,所以你實際上是在做mr.abc [0] = mr.abc [0] | 將0xC0;
所以這意味着結果取決於mr.abc [0]的原始值,可能是也可能不是0。
char(1字節)中也有8位...因此,陣列中有4個元素,總共有32位。
Java對所有按位運算使用完全相同的表示法。 我不確定你在BitSet上的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.