开发者

How the bits are stored in C++, How to represent similar functionality in Java

I have in 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
}

here OR operation is goin on after which the value will be stored. So in memory is it like (0th)11000000(1st)100000(2nd)1000100 as these are in array? how many bits can be actually stored in [4](total 0+1+2+3+4).

In Java:

private BitSet abc = new BitSet(40);

if a updation or modification of bits are required we can utilise set or get methods provided by the bitset class. In java if we need to carry out the OR oper开发者_如何学Cation we need to add the 0's in the suffix to have the same result. Which we can avoid in c++?? Thanks


So in memory is it like (0th)11000000(1st)100000(2nd)1000100 as these are in array?

almost: (0th)11000000(1st)00100000(2nd)01000100

how many bits can be actually stored in [4](total 0+1+2+3+4).

Not 0+...+4, but 0+...+3, 4 chars of size 8 bits = 32 bits (indices: 0, 1, 2, 3)

And you can still use the bitwise operators in Java - not entirely sure what you are asking regarding the Java code ??


Since you are using the |=, you are actually doing mr.abc[0] = mr.abc[0] | 0xC0;

So this means the result depends on the original value of mr.abc[0], which may or may not be 0.

Also there are 8 bits in a char(1 byte)..so with 4 elements in the array there are 32 bits total.

Java uses the exact same notations for all the bitwise operations. I am not sure where you are going with the BitSet.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜