[conv.integral]/3 在最新的C++草案中
[conv.integral]/3 in the the latest C++ draft
我了解将short
转换为unsigned int
的机制。例如,给定一个short y = -1;
并将其分配给一个unsigned int
我们将得到数字 4,294,967,295,它等于 2^32 -1。如果short
等于 -2 并且我们将其分配给一个unsigned int
,我们将得到 4,294,967,294,等于 2^32 - 2,依此类推。
我的问题是从最新草案的[conv.integral]/3段中推断出上面解释的机制:
否则,结果是目标类型的唯一值 与源整数模 2^N 全等,其中 N 是宽度 目标类型。
我可以理解 4,294,967,295 mod 2^32 = 4,294,967,295 是目标类型的唯一值,可能与源类型的值 -1 mod 2^32 全等(短(。但是我如何证明这两个数字相等呢?
但是
我如何证明 [4,294,967,295 和 -1] 相等呢?
这些数字并不相等。它们是全等模 232(等于 4'294'967'296(。
要知道如何显示一致性,让我们首先看一下定义(维基百科(:
对于正整数 n,两个数字 a 和 b 被称为全等模 n,如果它们的差 a − b 是 n 的整数倍(也就是说,如果有一个整数 k使得 a − b = kn(
好的,让我们计算一下这个差异:
d = a − b
d = 4'294'967'295 - (-1)
d = 4'294'967'296
现在,让我们回答这个问题,d
是n
的倍数吗?换句话说,是否存在一个乘数k
可以乘以d
,以便结果n
.
答:是的,有。对于k = 1
,d * 1
等于 4'294'967'296,这确实等于n
。因此,我们已经证明-1 ≡ 4'294'967'295 (mod 4'294'967'296
(。
相关文章:
- 原子读取是否保证读取最新值
- CMake:默认情况下,如何使add_custom_command输出保持最新?
- C ++ pcl_ros:如何使用最新的 100 条消息生成点云
- 从更改日志获取最新的 USN 数据
- 找不到最新插入到 std::map 中的键
- 数组中所有元素的最新最小元素的第五个位置
- 如何为不同的分支使用不同的 Xcode 版本(或具有不同 Clang 版本的最新 Xcode)?
- 文件存在时的最新检查声明生成输入"is missing"
- 无法在 Windows 上安装最新的 GCC
- 如何在特拉维斯CI中使用最新的提升版本?
- [conv.integral]/3 在最新的C++草案中
- 卡夫卡消费者投票最新消息
- 如何将CSV文件集成到OMNeT++最新版本中?
- 想要以最新的添加节点完整返回树节点的根
- 如何手动设置'libstdc++.so.6'使用哪个版本而不是使用最新版本?
- 源文件未使用最新版本的Dev C 和OpenCV 3.x版本编译
- 如何使用 cpp 文件系统在目录中查找最新文件
- 最新版本的 Boost asio 库中缺少方法的替代方法
- 不能在 Solaris 的最新编译器中使用带有新 c+11 标志的 xercesc
- 如何使用 Boost V2 1.70 日志记录库在第一个索引(例如 logtrail01.txt)保留最新的日志文件名?