1
|
jeremysprofile Subin George · 技术社区 · 7 年前 |
![]() |
1
3
正在尝试字节反转a 已签署 整数听起来不像是一个定义良好的算术运算,因为最高有效位的行为是整数符号的指示符,在处理整数变量时,将其移到其他位置没有多大意义。
更有可能的是,您可能有一个表示32位有符号整数的4字节序列,但需要进行字节反转,以便在不同的CPU端之间进行转换。要做到这一点,您可以简单地将数量视为无符号的,然后让
或者,稍微安全一些:
这是因为当对相同位深度的整数应用强制转换操作时,实际上会保持内存中的表示不变。在进行字节反转时,这会忽略符号的重要性(以及与有符号整数的二补表示相关的任何细微之处)。我不确定这种行为是否受到C标准的保证(这可能是语言律师的问题),但这可能是一种非常常见的行为。描述位于
www.cplusplus.com
指示如果系统对其有符号整数(非常常见)使用两个补码表示,则在
|
![]() |
2
2
只有当本机系统是little endian时,这才有意义,因为在big endian系统上将数据转换为带符号的little endian有什么意义?
所以在一个小端系统上,只需将大端整数转换为无符号整数,使用
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 3 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 3 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 3 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |