码出高效笔记

原码、反码、补码、移码概念

原码

就是未经更改的码,使用最高位表示符号位,正数为0,负数为1,剩下的事表示该树的绝对值。故8位字节表示的数字范围为 127(2^7-1) ~ -128(-2^7+1)。
例子:数字 127 表示为 0111 1111,数字-127表示为 11111111

反码

反码就是在原码的基础上,符号位不变,各位取反
例子:数字 127 表示为 0000 0000 ,数字 -127 表示为 1000 0000。

补码

补码就是在原码的基础上,符号位不变,各位取反,末位加一。
例子:数字 127 表示为 0000 0001 ,数字 -127 表示为 1000 0001。
负数转正数先 -1 再取反 。例:1111 1110 表示 -2;先 -1,得到 1111 1101,取反得到 0000 0010,即为正数 2 。
负数转正数先取反再 +1,再将符号位之外各位取反。例:-163 二进制为 1 0101 1101,先 取反,1  1010 0010,再 +1,得到 1 1010 0011,去掉符号位,得到1010 0011 , 转换为10进制为 163

移码

将补码符号位取反即可
例子:数字 127 表示为 1000 0001 ,数字 -127 表示为 0000 0001 

与、或、非、取反运算

与:都为1,结果为1,否则为0。
或:一个为1,结果为1,否则为0。
异或:两个值不同为1,否则为0。同为真,假为异。
非:即取反,1变0,0变1。

十进制正数转二进制负数

先十进制转二进制原码,再转反码,再把反码加1。

二进制负数转10进制

先二进制负数-1,再取反,即可得到十进制的正数二进制。

二进制负数转10进制

1011 = -1 * 2的3次方 + 0 * 2的2次方 + 1 * 2 + 1 * 2的0次方 = -8 + 0 +2+1 = -5

十进制负数转二进制

除2取余,逆序排列,得到原码,然后取反,反码加一得到补码,就是二进制表示。
如:-9  除2取余后为:1 0 0 1  得到原码 0000 1001,取反:1111 0110,加一 1111 0111

正数的反码和补码都与原码相同。
负数的反码为对该数的原码除符号位外各位取反。
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
源码:优点在于换算简单 缺点在于两个零 加减法需要独立运算
反码:有点在于表示清晰 缺点在于两个零 加减法同样需要独立运算
补码:优点在于一个零 范围大 减法可以转为加法 缺点在于理解困难

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值