在C中对无符号强制转换是否更改位值

纪尧姆·佩蒂让(Guillaume Petitjean)

我做了一些快速测试,一个signed intunsigned int用C投不改变位值(上的在线调试器)。

我想知道的是它是由C标准保证还是仅由常见(但不是100%肯定)行为保证?

安蒂·哈帕拉(Antti Haapala)

从转换signed intunsigned int不改变位表示二进制补码C实现,这是最常见的,但会改变位表示为负数,其中包括可能的负零的补签后换的幅度系统。

这是因为铸造(unsigned int) a定义为保留位,但结果是正余数除以aUINT_MAX + 1(或为C标准(C11 6.3.1.3p2)表示,

通过反复添加或减去比新类型中可以表示的最大值多一个值来转换该值,直到该值在新类型的范围内为止。

负数的二进制补码表示形式是有符号数的最常用表示形式,正是因为它具有将负值n映射到与数学值相同的位模式的这种特性n + UINT_MAX + 1-使得对有符号和无符号使用相同的机器指令成为可能另外,由于回绕,负数将起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在调用toupper(),tolower()等之前,是否需要强制转换为无符号字符?

来自分类Dev

将有符号转换为无符号时,C编译器可以更改位表示吗?

来自分类Dev

在C#中从BitArray转换为16位无符号整数

来自分类Dev

从64位十六进制地址中提取位到C中的无符号int

来自分类Dev

'无符号变量:值'C ++

来自分类Dev

C中的无符号Int到RGB值

来自分类Dev

如何集体检查是否在无符号整数中设置了位?

来自分类Dev

C中无符号long long的按位运算

来自分类Dev

无符号32位整数在SSE中的水平最小值和位置

来自分类Dev

将位集强制转换为无符号字符,反之亦然

来自分类Dev

(无符号强制转换)值和书写值之间的区别?

来自分类Dev

在有符号的int和无符号的int之间转换时,是否需要强制类型转换?

来自分类Dev

C ++在无符号long long int值中的奇怪跳转

来自分类Dev

问题在C中转换无符号64位数字的字节顺序

来自分类Dev

C中的无符号位长移位

来自分类Dev

如果字节缓冲区应为无符号字符,我是否必须一直保持强制转换?

来自分类Dev

输出无符号短路(C)的位值

来自分类Dev

在C#中从BitArray转换为16位无符号整数

来自分类Dev

在调用toupper(),tolower()等之前,是否需要强制转换为无符号char?

来自分类Dev

如何避免以良好实践的方式转换符号(无强制转换)?

来自分类Dev

'无符号变量:值'C ++

来自分类Dev

C#有符号和无符号整数是否都在缩小转换范围?

来自分类Dev

在有符号的int和无符号的int之间转换时,是否需要强制类型转换?

来自分类Dev

在两个16位寄存器中存储无符号长值

来自分类Dev

使用更少位的无符号qword(64位)的值范围?

来自分类Dev

Clojure中的无符号16位整数

来自分类Dev

C中的有符号和无符号整数的按位非

来自分类Dev

如何将 16 位无符号整数转换为 8 位无符号字符并最终返回无符号字符*?

来自分类Dev

在 C# 中是否可以在没有类型转换的情况下将整数转换为无符号整数?

Related 相关文章

  1. 1

    在调用toupper(),tolower()等之前,是否需要强制转换为无符号字符?

  2. 2

    将有符号转换为无符号时,C编译器可以更改位表示吗?

  3. 3

    在C#中从BitArray转换为16位无符号整数

  4. 4

    从64位十六进制地址中提取位到C中的无符号int

  5. 5

    '无符号变量:值'C ++

  6. 6

    C中的无符号Int到RGB值

  7. 7

    如何集体检查是否在无符号整数中设置了位?

  8. 8

    C中无符号long long的按位运算

  9. 9

    无符号32位整数在SSE中的水平最小值和位置

  10. 10

    将位集强制转换为无符号字符,反之亦然

  11. 11

    (无符号强制转换)值和书写值之间的区别?

  12. 12

    在有符号的int和无符号的int之间转换时,是否需要强制类型转换?

  13. 13

    C ++在无符号long long int值中的奇怪跳转

  14. 14

    问题在C中转换无符号64位数字的字节顺序

  15. 15

    C中的无符号位长移位

  16. 16

    如果字节缓冲区应为无符号字符,我是否必须一直保持强制转换?

  17. 17

    输出无符号短路(C)的位值

  18. 18

    在C#中从BitArray转换为16位无符号整数

  19. 19

    在调用toupper(),tolower()等之前,是否需要强制转换为无符号char?

  20. 20

    如何避免以良好实践的方式转换符号(无强制转换)?

  21. 21

    '无符号变量:值'C ++

  22. 22

    C#有符号和无符号整数是否都在缩小转换范围?

  23. 23

    在有符号的int和无符号的int之间转换时,是否需要强制类型转换?

  24. 24

    在两个16位寄存器中存储无符号长值

  25. 25

    使用更少位的无符号qword(64位)的值范围?

  26. 26

    Clojure中的无符号16位整数

  27. 27

    C中的有符号和无符号整数的按位非

  28. 28

    如何将 16 位无符号整数转换为 8 位无符号字符并最终返回无符号字符*?

  29. 29

    在 C# 中是否可以在没有类型转换的情况下将整数转换为无符号整数?

热门标签

归档