原码补码反码转换「建议收藏」

原码补码反码转换「建议收藏」一、机器数和真值在学习原码、反码和补码之前,需要先了解机器数和真值的概念。1、机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1.比如,十进制中的数+2,计算机字长为8位,转换成二进制就是00000010。如果是-2,就是10000010。那么,这里的00000010和10000010就是机器数。2、真值机器数的第一位是符号位,后边才是真正的数值,所以机器数的形式值就不等于真正的数

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

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、机器数和真值

在学习原码、反码和补码之前,需要先了解机器数和真值的概念。

1、机器数

一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1.

比如,十进制中的数 +2 ,计算机字长为8位,转换成二进制就是00000010。如果是 -2 ,就是 10000010 。

那么,这里的 00000010 和 10000010 就是机器数。

2、真值

机器数的第一位是符号位,后边才是真正的数值,所以机器数的形式值就不等于真正的数值。例如上面的有符号数10000011,其最高位1代表负,其真正数值是 -2 而不是形式值130(10000010转换成十进制等于130)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

例:

0000 0001的真值 = +000 0001 = +1

1000 0001的真值 = –000 0001 = –1

二、原码、反码、补码的基础概念和计算方法

原码补码反码转换「建议收藏」

 

1. 原码

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:

[+1](原码) = 0000 0001

[-1](原码) = 1000 0001

第一位是符号位。因为第一位是符号位,所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]

[-127 , 127]

原码是人脑最容易理解和计算的表示方式。

2. 反码

反码的表示方法是: 正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

[+1] = [00000001](原码)= [00000001](反码)

[-1] = [10000001](原码)= [11111110](反码)

可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。

3. 补码

补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1 (即在反码的基础上+1)。

[+1] = [00000001](原码) = [00000001](反码) = [00000001](补码)

[-1] = [10000001](原码) = [11111110](反码) = [11111111](补码)

对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码在计算其数值。

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

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

(0)
上一篇 2025年12月5日 下午10:22
下一篇 2025年12月5日 下午11:01


相关推荐

  • app怎么修改服务器IP地址,怎么修改手机服务器ip地址

    app怎么修改服务器IP地址,怎么修改手机服务器ip地址怎么修改手机服务器ip地址内容精选换一换如果私钥文件丢失了,可以为服务器替换新的密钥对,并使用新的私钥文件连接云手机。以下为替换服务器密钥对的操作指导,请提前在云服务器控制台创建密钥对,并将密钥对对应的私钥文件下载至本地。登录管理控制台。在服务列表页,选择“计算>云手机CPH”。进入云手机页面。进入云手机页面。单击左侧导航栏的“服务器管理”。选择需要修改密钥对的服务器,在本文主要介绍…

    2022年6月29日
    36
  • leveldb多线程读写(大数据高并发解决方案)

    在并发写入的时候,leveldb巧妙的利用一个时间窗口做batch写入,这部分代码值得一读:StatusDBImpl::Write(constWriteOptions&options,WriteBatch*my_batch){  //partA  Writerw(&mutex_);  w.batch=my_batch;  w.sync=options.syn…

    2022年4月16日
    190
  • 用AVX2指令集优化整形数组求和

    用AVX2指令集优化整形数组求和用AVX2指令集优化高精度加法一、AVX2指令集介绍二、代码实现1.普通高精度加法2.AVX2加速高精度加法3.实现细节说明三、性能测试测试环境计时方式测试内容测试命令测试结果四、总结个人推断原因:一、AVX2指令集介绍AVX2是SIMD(单指令多数据流)指令集,支持在一个指令周期内同时对256位内存进行操作。包含乘法,加法,位运算等功能。下附Intel官网使用文档。Intel®IntrinsicsGuide我们本次要用到的指令是__m256i_mm256_add_epi8(__m2

    2022年5月7日
    51
  • 14天养号接商单,智谱称AI Agent可以后台赚钱了

    14天养号接商单,智谱称AI Agent可以后台赚钱了

    2026年3月12日
    2
  • icmp数据包BE、LE解释

    icmp数据包BE、LE解释我使用 winshark 抓取 icmp 数据包 在解析他的内容及结构时 有几个部分不明了其中意思 分别为 Identifier BE Identifier LE Sequencenumb BE Sequencenumb LE 以下是我对他们对应数据的截图 另外 Sequencenumb BE 和 Sequencenumb LE 的值也是相同的 BE 和 LE 是什么区别 他们在内容上只是顺序的不同 而对应的 hex 值是相同的 通过资料的查找 可以这样理解 wireshark 考虑到 wi

    2026年3月18日
    2
  • [c/c++]——最长回文子串「建议收藏」

    [c/c++]——最长回文子串「建议收藏」最长回文子串已经很久没有更新关于leetcode的题解了,一个是觉得太费时间,二一个目前网上也有很全面的解答,但是在写leetcode的最长回文子串时,发现很多同学的代码都很长(实际上几行就可以解决的事情),并且c++解答的代码不够完整。最关键的是在一种“马拉车”的算法卡了很久很久,今天把几种求解的方法全部都整理出来,方便大家也便于自己以后复习。ps:讲解很少,都是整理出可看性很高的源码方法…

    2022年5月2日
    54

发表回复

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

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