簡體   English   中英

如何在C ++中存儲這些位,如何在Java中表示類似的功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM