原码反码补码的相互转换_补码转化为反码

原码反码补码的相互转换_补码转化为反码原码反码补码的相互转换原码反码补码的转换还是比较简单基础的问题。之前学习java的时候就学过,后来忘记了,忘记了!!!,后来学了位移运算符,左移右移无符号右移之后就由有点儿懵了。原码,反码,补码二进制中第一位是符号位,0表示正数,1表示负数。以八位二进制数为例。原码十进制数正1的二进制原码[+1]原=00000001十进制数负1的二进制原码[-1]原…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

原码 反码 补码的相互转换

原码 反码 补码的转换 还是比较 简单基础的问题。之前学习java的时候就学过,后来忘记了,忘记了!!!,后来学了位移运算符,左移 右移 无符号右移 之后就由有点儿懵了。

原码,反码,补码
二进制中第一位是符号位,0表示正数,1表示负数。
以八位二进制数为例。

  1. 原码
    十进制数正1的二进制原码 [+1] 原 = 0000 0001
    十进制数负1的二进制原码 [-1] 原 = 1000 0001
    第一位是符号位. 因为第一位是符号位, 所以
    8位二进制数的取值范围:[1111 1111 , 0111 1111]
    对应十进制 [-127 , 127] 范围。

  2. 反码
    反码的表示方法是:
    1.正数的反码是其本身
    2.负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
    [+1] = [0000 0001]原 = [0000 0001]反
    [-1] = [1000 0001]原 = [1111 1110] 反

  3. 补码
    补码的表示方法是:
    正数的补码就是其本身
    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
    [+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
    [-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补

  • 总结
    在知道一个数原码的情况下:
    正数:反码,补码 就是本身自己
    负数:反码是高位符号位不变,其余位取反。补码:反码+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 .

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/223083.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一句话讲清楚什么是JavaEE「建议收藏」

    一句话讲清楚什么是JavaEE「建议收藏」Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多的Jav

    2022年8月3日
    9
  • 内网IP和公网IP的区别

    内网IP和公网IP的区别IP地址对于经常上网的人应该都不陌生,ip地址又可以分成内网ip地址和公网ip地址,今天就来简单介绍下这两者的区别。通常我们所说的内网也就是局域网,是内网的计算机以网络地址转换协议,通过一个公共的网关访问Internet。而内网的计算机也可以向Internet上的其他计算机发送连接请求。但是但Internet上其他的计算机无法向内网的计算机发送连接请求。为了简单理解我们就以网吧的网络举个列子,网吧的网线都是连接在同一个交换机上面的,也就是说它们的IP地址是由交换机或者路由器进行分配的。而且每…

    2022年4月29日
    50
  • 前端框架AdminLTE

    前端框架AdminLTE作为CMDB资产管理项目,必须有一个丰富、直观、酷炫的前端页面。适合运维平台的前端框架有很多,开源的也不少,这里选用的是AdminLTE。AdminLTE托管在GitHub上,可以通过下面的地址下载:https://github.com/almasaeed2010/AdminLTE/releasesAdminLTE自带JQuery和Bootstrap3框架,无需另外下载。AdminLTE自带多种配…

    2022年7月27日
    18
  • 美化包软件_html简单进度条插件

    美化包软件_html简单进度条插件前言在我们进行自动化测试的时候,用例往往是成百上千,执行的时间是几十分钟或者是小时级别。有时,我们在调试那么多用例的时候,不知道执行到什么程度了,而pytest-sugar插件能很好解决我们的痛点。

    2022年7月30日
    8
  • python 获取B站播放量计算的条件及……

    python 获取B站播放量计算的条件及……

    2021年11月10日
    37
  • icem网格划分如何给内部面网格_icem结构化网格划分 ICEM里面设置一下就可以自动划分网格,为什么要用块?…

    icem网格划分如何给内部面网格_icem结构化网格划分 ICEM里面设置一下就可以自动划分网格,为什么要用块?…ICEM里面设置一下就可以自动划分网格,为什么要用块?块划分方法是结构化网格划分,相比于非结构化网格有较规则形状的网格质量可以做的很高,进行数值计算时也可以采用更高阶的格式(非结构化最高二阶精度)。图中网格划分方法可以先做出长方体,然后在其侧面拉伸出来小圆柱,也可以这4个分开做网格,最后用interface连接起来即可icem中想要将模型划分成几个部分,分别应用不同的网格划分,该怎么做?是非结构化…

    2022年5月25日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号