ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

反码补码原码

2022-09-12 14:01:33  阅读:185  来源: 互联网

标签:反码 二进制 补码 00000000 0000 原码


        原码将一个整数转换成二进制形式,就是其原码。例如short a = 6; a 的原码就是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的原码就是1000 0000 0001 0010通俗的理解,原码就是一个整数本来的二进制形式。

        反码对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位以外的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。例如short a = 6; a 的原码和反码都是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的反码是1111 1111 1110 1101

         补码对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。例如short a = 6; a 的原码、反码、补码都是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的补码是1111 1111 1110 1110可以认为,补码是在反码的基础上打了一个补丁,进行了一下修正,所以叫“补码”。

         原码、反码、补码的概念只对负数有实际意义,对于正数,原码、反码、补码都是一样的。

         计算机在任何情况下都只能识别二进制,计算机在底层存储数据的时候,一律存储的是“二进制的补码形式”,计算机采用补码形式存储数据的原因是:补码形式效率最高。

 

对应的二进制原码:00000000 00000000 00000000 00000001
对应的二进制反码:00000000 00000000 00000000 00000001
对应的二进制补码:00000000 00000000 00000000 00000001

对于一个负数来说:二进制原码、反码、补码是什么关系呢?

byte i = -1;
1
对应的二进制原码:10000001
对应的二进制反码(符号位不变,其它位取反):11111110
对应的二进制补码(反码+1):11111111

eg.分析 byte b = (byte)150;------>这个b是多少?

int类型的4个字节的150的二进制码是什么?
00000000 00000000 00000000 10010110

将以上的int类型强制类型转为1个字节的byte,最终在计算机中的二进制码是: 10010110

千万要注意:计算机永远存储的都是二进制补码形式。也就是说上面

10010110 这个是一个二进制补码形式,你可以采用逆推导的方式推算出
这个二进制补码对应的原码是啥:
10010110 ---> 二进制补码形式(反码-1)⬇
10010101 ---> 二进制反码形式(符号位不变,其它位取反)⬇
11101010 ---> 二进制原码形式

标签:反码,二进制,补码,00000000,0000,原码
来源: https://www.cnblogs.com/DREAM2021/p/16686055.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有