发布网友 发布时间:2022-04-28 15:58
共1个回答
热心网友 时间:2022-06-19 14:29
这里有一个基本假设:int 假定是32位,虽然常见的都是32位,但其实我们说整形,可以有16位,32位,64位,甚至无穷位。
为了方便讨论起见,我们 把 int 认为是 8 位 二进制 无符号数。(32位讨论自己类推)
那么
位 __8 _7 _6 _5 4 3 2 1 (对应位置一时表示的值如下)我们知道八位二进制整数的表示范围 0 到 511。
所以 如果某个数 X⑧ 第八位是1,那么 这个数必定大于等于 256 = (2^7) = 2^(8-1) 【自己类比32位数】。因此如果 数 X⑧ / 256 的结果(0或者1)就可以表示第八位是0还是1。【也就得到了 X 的第八位】
接下来把 X⑧ 对 256 取模,变成一个 7 位 二进制数了, X⑦ = X⑧ % 256, (X⑦的第八位必定是0,取模256这个操作完整的保留了 X⑧ 的 低七位到 X⑦中)。因此取X⑦的第七位是0还是1就依照 X⑦ / 128 【也就得到了 X⑧ 的第七位】
X⑥ = X⑦ % 128 的第六位 X⑥/64【也就得到了 X⑧ 的第六位】
X⑤ = X⑥ %64 的第五位 X⑥/32【也就得到了 X⑧ 的第五位】
。。。。。