最低有效字节是什么意思
What does least significant byte mean?
我必须实现一个将字节写入ostream
对象的方法。我们叫它ostream
对象strobj
。我还有一个位缓冲区用来存储一个字节的数据,我们叫它:
char &bitter;
在我的头文件中,我有这个:
void writeThisByte(int sumInt);
指令说我必须将传递给ostream
对象的int的"低有效字节"写入,即strobj
;
然而,我对最低有效字节的确切含义感到困惑。
这是否意味着您正在检查是否sumInt == 1
?如果是,你会这样写给ostream
吗?
strobj.write(&bitter, 1);
想象一个32位整数,其中每个位可以是0或1,例如:
011101010101010101010101010110110
^^^^^^^^
最不重要的字节是右边的8位。
举一个十进制的例子可能更容易理解:给定数字291023,"3"是最低有效的十进制数字,因为如果你改变它,你对整个数字的影响最小。在二进制中,我们处理二进制数字(缩写为"bits"),一个字节被定义为8位,但这个概念仍然成立。
要获得最低有效位,只需按位计算-并且较大的int
具有0xFF十六进制或255十进制(1+2+4+8+16+32+64+128=255)-这将清除所有更重要的位并保留8个最低有效位…
int x = ...whatever...;
unsigned char least_significant_bits = x & 255;
(您也可以将结果存储在更宽的类型中,如int
,或std::byte
或std::uint8_t
)。
位与操作是这样工作的,只有当两个输入都是1
时才产生1
s:
011101010101010101010101010110110 // x
000000000000000000000000011111111 //255
result:
000000000000000000000000010110110 // x & 255
您的int
由几个字节组成(很可能是2、4或8字节)。与最低有效位的概念类似,最低有效字节是整个整数值中权重较小的字节。根据系统的端序,它可能是内存的第一个字节或最后一个字节。
提取最不重要的字节,按位与1
s的一个字节值,即255:
int LSB = (someInteger & 0xFF);
int
中越重要的位对其价值贡献越大。最低有效位的贡献较小。您通常可以通过将整数与255
(一个包含所有1
s的字节)连接来获得这些
int lsb;
lsb = SumInt & 255;
-
当您查看十进制数时,例如507,最不有效的数字将是7。
将其更改为6或8将比更改为5对整体数字的影响小得多。 当您查看日期时,例如 2013年5月14日, 最不重要的部分是按时间顺序排列的日期(14)。
当您查看一个unsigned 32位int(4字节)时,其中4字节
b0, b1, b2, b3
的整数值为(256^3)*b3 + (256^2)*b2 + 256*b1 + b0
, 最不重要的字节是b0
。
您可以通过执行char c = sumInt & 0xFF;
从int sumInt
中获得最低有效字节,正如其他人所建议的。
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思