求教一个 Python 反码的问题.

2019-04-19 14:41:08 +08:00
 l4ever

如图, 二进制 1101110 如何得出-18 的? 11001 如何得出-7 的

1879 次点击
所在节点    Python
3 条回复
cshlxm
2019-04-19 14:50:29 +08:00
1101110 去掉头部 1,反码 010001 =17 再+1 =18 第一位的 1 表示是负数 即 -18
11001 去掉头部 1,反码 0110 =6 再 +1 =7 同理即-7
fengyuwusong
2019-04-19 14:56:42 +08:00
你这不是补码吗?...

正数
源码反码补码都一样

负数
反码转源码:符号位不变, 其他按位取反
补码转源码:符号为不变, 其他按位取反 再加 1

例如 1101110 => 1010001 + 1 = 1010010 = -1 * (2^1 + 2^4) = -1 * ( 2+16 )= -18
剩下那个你可以自己试试。
Leigg
2019-04-19 21:38:27 +08:00
正数的取反刚好是-(x+1)
负数取反刚好是(-x)-1
了解原理的话,搜一下二进制 补码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX