ICode9

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

关于原码、反码、补码

2022-09-11 21:03:48  阅读:191  来源: 互联网

标签:反码 符号 二进制 补码 十进制 原码


       此次我学习了有关原码、反码、补码的知识。其实在大一上的时候,在刚刚接触C语言的时候我就已经接触过原码、反码、补码的知识了,但是当时因为知识的限制以及对计算机了解的浅薄,导致我没有很明白,清楚地知道为什么原码反码补码是什么关系,为什么他们只能储存这么多数,以及为什么他们之间的关系是按位取反。只知道三者表面上的关系。

  那么此次学习,我在复习了原码、反码、补码之间的关系后,更着重学习了三者的内在联系,从内在中学习他们之间为什么是这种关系,从而更好地了解计算机内部构建。

  首先是三者概念:

1、原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。

2、反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。 

3、补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。

  

  

例如 十进制数字:5

5=2^2+2^0     101   至少要三位数字   加上符号位   就是4位数字

原码:0101       

反码:0101

补码:0101

 

那么 十进制数字:-5

5=2^2+2^0     101   至少要三位数字   加上符号位   就是4位数字

原码:1101

反码:1010

补码:1011

 

  从以上两个例子可以看出,取一个数的原码、反码、补码第一件事就是要将这个数用二进制表达出来、其次,靠三者的关系,第一位是符号位,1为负数,0为正数。原码只需将二进制前加一个符号位,那么反码就需要对原码按位取反,即0取1,1取0;那么补码就是在反码的基础上在最后一位加1,如果最后一位是1,那么则进一位。

  比如 -42:

  原码:10101010

  反码:11010101

  补码:11010110

  此外,我了解了原码、反码、补码的表示范围:

n+1位数字,绝对值最大的原码是 -(2^n - 1)和 2^n - 1

n+1位数字,绝对值最大的反码是 -(2^n - 1) 和 2^n - 1

n+1位数字,绝对值最大的补码是 -2^n

例如

原码:

二进制无符号000~111 十进制0~ 7 0 ~ 2^3-1

二进制有符号0000~0111 十进制0~7 0 ~ 2^3-1

二进制有符号1111~1000 十进制-7~0 -(2^3-1) ~ 0

综上所述:4位原码的表示范围: -(2^3 - 1) ~ 2^3-1

用4位二进制原码表示的范围 1111~0111可以表示15个十进制数字 -(2^3 - 1) ~ 2^3-1

用4位二进制反码表示的范围 1000~0111可以表示15个十进制数字 -(2^3 - 1) ~ 2^3-1

用4位二进制补码表示的范围 1000~0111 可以表示16个十进制数字 -2^3 ~ 2^3-1

  以上就是我对此次原码、反码、补码的进一步学习。其实掌握了规律,便也会进行运算了。

 

  

  二进制转十进制

无符号二进制      十进制             加1后的二进制          加1后十进制
1                        2^1 – 1                    10                         2^1
11                      2^2 – 1                    100                       2^2
111                     2^3 – 1                    1000                      2^3
1111                    2^4 – 1                    10000                    2^4
111……                11 n个1 2^n – 1         1000……000n个0    2^n

 


将原码:10101,01001 转成十进制数

10101 = -1*2^2 + 1*2^0

01001 = 1*2^3 + 1*2^0

 

标签:反码,符号,二进制,补码,十进制,原码
来源: https://www.cnblogs.com/joranger/p/16684789.html

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

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

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

ICode9版权所有