java - 这些位如何在 C++ 中存储,如何在 Java 中表示类似的功能

标签 java c++ bit

我在 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);

如果需要更新或修改位,我们可以使用位集类提供的设置或获取方法。 在java中,如果我们需要进行OR操作,我们需要在后缀中添加0来得到相同的结果。我们可以在 C++ 中避免哪些? 谢谢

最佳答案

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

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

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

不是 0+...+4,而是 0+...+3,4 个字符大小为 8 位 = 32 位(索引:0、1、2、3)

而且您仍然可以在 Java 中使用按位运算符 - 不完全确定您在询问有关 Java 代码的内容??

关于java - 这些位如何在 C++ 中存储,如何在 Java 中表示类似的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933172/

相关文章:

java - android - 从文本文件中逐行读取

JavaMail发送前进行密码验证

java - Struts 2 + Spring 在 session 中放置一个托管的 spring bean

c++ - 如何模拟已经编译到库中的类?

python - 写一个位翻转算法

Java - Base64 解码

c++ - CreateWindowEx 发布 WM_SIZE?

c++ - Windows Media Foundation MFT缓冲和视频质量问题(颜色丢失,而不是平滑的曲线,尤其是文本)

c - C中的char数组内的位交换

c - 两个 32 位数字的乘法仅使用 8 位数字