gpt4 book ai didi

c++ - 位和字节填充

转载 作者:行者123 更新时间:2023-11-27 22:55:52 24 4
gpt4 key购买 nike

在表单中编写代码:

int i = 0xFF;

并且知道在我的系统上 int 类型有 4 个字节,是否有一种标准方法可以预测那些缺失的位将如何填充到 i 变量中,即它总是被填充为:
0xFFFFFFFF
或者
0xFF000000
也就是说,上面的例子是关于这样一个问题,我们可以预测其余的位是用 0 还是 1 填充吗?

另一个问题是,有没有办法知道它是从后面填充还是从前面填充:
0xFF000000//<<- 位在后面填充或者
0x000000FF//<<- 位从前面填充

最佳答案

int i = 0xFF; 4 字节整数用 FF 填充 1 个字节,用 00 填充另外 3 个字节。

char i = 0xFF; 另一方面(使用 1 字节 char)用 FF 填充 1 个字节,您无法保证接下来的 3 个字节是什么(无论是它们的值,还是它们是否是否用于其他变量等)。

字节方向

FF 00 00 00
00 00 00 FF

被称为您的 CPU 的“字节顺序”(操作系统、编译器等都是以匹配它的方式制作的)。今天的“普通”计算机是“小端”,即 FF 00 00 00,尽管大端存在于手机等设备中。
但是,您不会直接在程序中注意到字节顺序:如果将 int 与此值进行比较,它将等于 00 00 00 FF,这在数学上是正确的(或者从另一个方向说:当您在源文件中写入 000000FF 时,编译器会更改它,实际上您正在将 int 值与 FF 00 00 00)进行比较。要获得“真实”表示,必须转换为字节/字符指针并单独访问 4 个字节。

关于c++ - 位和字节填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com