背景知识补充
正数:原码=反码=补码
负数:原码 反码 补码之间 转换有规则(下面讨论)
0:分为+0 和 -0去考虑,符合上面那两条规则
补充一个概念叫做符号位,把每个数第一位当作符号位,取0为整数,取1为负数
对负数的讨论:
1,原码到反码 除符号位 全部 翻转
比如说: 原码:100001 反码应该为 111110 (后面五位全部翻转)
2,反码到补码(可以不看,直接看第三条比较简单,但是还是知道比较好) 整体加上1
例子: 反码:111110 补码:111111 (整体加1) 但是符号位永远不运算
3,原码到补码 从原码右往左看,找到第一个1 左边除符号位全部翻转,右边保持
例子:原码:100001 补码:111111 (看懂了吗?不懂留言)
实现代码
实现代码全是参照上面的规则写的,很简单的
/// author:seen
/// time:2015-09-24