原码 反码 补码的转换 还是比较 简单基础的问题。之前学习java的时候就学过,后来忘记了,忘记了!!!,后来学了位移运算符,左移 右移 无符号右移 之后就由有点儿懵了。
原码,反码,补码 二进制中第一位是符号位,0表示正数,1表示负数。 以八位二进制数为例。
练习 -A(二进制数)原码转为补码 ,先减一再按位取反 或者 先按位取反再加1 。 -A (二进制数)补码转化为原码 :按位取反加1 或减一再按位取反 注意第一位符号位不变。 符号位就是第一位,1是负数,0是正数。 不表示数值的大小 例子: 问:4补码为:0100 -4补码为:1100 ? 答:-4原码是 1000 0100 ; 反码(原码符号位不变,按位取反)是1111 1011 ;补码(反码加一)是 1111 1100 八位二进制中(假设是八位的):4 补码为:0000 0100 -4补码为:1111 1100 详解: -4原码 转化为-4的补码过程 补码的转化 方法一: 1000 0100 减一 得1000 0011 按位取反得1111 1100 方法二 :1000 0100 按位取反得1111 1011 加一得 1111 1100 -4的补码转化为原码 按位取反但是符号位不变 方法一:1111 1100 按位取反 得 1000 0011 加一 0000 0100 取负数 得-4 方法二:1111 1100减一得 1111 1011 按位取反 1000 0100 取负数 得-4 记不住得话,记住,补码=原码按位取反再+1 ,原码=补码减一再按位取反 。 重点: 1.正数的,原码反码补码都相同。 以上规则是对于负数而言的。 2.正数与负数的原码 只差符号位的值,不一样 正数是0 负数是1 .
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/223083.html原文链接:https://javaforall.cn