C 和 C++ 的整数(笔记)

                     

贡献者: addis

预备知识 C++ 基础

  1本文的模(modulo)运算都是指 $M$ 加减整数个 $N$ 后使结果范围在 $0$ 到 $N-1$ 之间(包含),$N$ 只能是正整数。本文中 $n$ 表示整数类型的比特数。

1. 无符号整数

2. 有符号整数

2 的补

   有符号整数类型的负数在内存中的二进制表示常采用 2 的补(2's complement)储存(例如 x86-64 架构)。若采用 2 的补,以下几点成立

   也有其他表示负数的方法,例如最左边的 bit 表示符号,剩余表示大小。

   数学上,可以将无符号的整数类型及其加法构成一个 $2^n$ 元循环群(见例 2 )。若采用 2 的补,由于群元素可以用任何符号,有符号整数类型可以看作将无符号整数类型的后一半元素减去 $2^n$,而群运算保持不变。

3. 转换规则

   整数之间的转换规则:

   其他基本类型转换规则:

4. Integral Promotion

5. Usual Arithmetic Conversion

6. Integer Literal

  2这里讨论 c++11 标准。literal 中的字母不区分大小写,0 开头表示 8 进制, 0x 开头表示 16 进制,数字后面可以加 u,以及 lll 的一个(可以是大写)。literal 的类型会根据数值的大小而变化。


1. ^ 参考 C++ Primer [1]
2. ^ 参考 cppreference


[1] ^ S. B. Lippman, et al. C++ Primer 5th edition.

致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利