原码,补码,反码

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

点击关注 异步图书,置顶公众号

每天与你分享 IT好书 技术干货 职场知识

9ccc0ca9gy1fqqbpgwhmhj20u00cigmc.jpg

机器数

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

真值

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

原码, 反码, 补码基本概念

原码

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

原码的优点

简单直观;例如,我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011

原码的缺点

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。显然出错了。

补码

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

补码的特性

一个负整数(或原码)与其补数(或补码)相加,和为模。
对一个整数的补码再求补码,等于该整数自身。
补码的正零与负零表示方法相同。
反码
正数的反码与其原码相同;负数的反码是对其原码除符号位外逐位取反。

原码, 反码, 补码表示方法

原码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.

反码

正数的反码是其本身

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

补码

正数的补码就是其本身

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)


[+1] = [00000001]原 = [00000001]反 = [00000001]补

[-1] = [10000001]原 = [11111110]反 = [11111111]补


总结:

正数的原码,反码,补码相同。

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 末位+1.


本文摘自异步社区,作者:兄弟,文章名称《原码,补码,反码》

​​​

9ccc0ca9gy1fqp729p635g20hs01pt93.gif

推荐阅读

2018年4月新书书单

异步图书最全Python书单

一份程序员必备的算法书单

第一本Python神经网络编程图书

9ccc0ca9gy1fqp72lxztpj209k09k744.jpg

​长按二维码,可以关注我们哟

每天与你分享IT好文。


在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步e读版图书一本。赶紧来参加哦!

点击阅读原文,查看更多

​阅读原文


相关文章
|
3月前
原码、反码、补码的互相转换
原码、反码、补码的互相转换
32 0
|
1月前
原码反码补码移码的介绍和计算
原码反码补码移码的介绍和计算
52 0
|
4月前
|
存储
原码,反码,补码以及计算
原码,反码,补码以及计算
23 0
|
10月前
原码补码反码
原码补码反码
88 0
|
存储
数制间的转换,原码、反码、补码
数制间的转换,原码、反码、补码
401 0
数制间的转换,原码、反码、补码
|
存储
一篇轻松带你Carry原码、反码、补码(建议收藏)
一篇轻松带你Carry原码、反码、补码(建议收藏)
170 0
原码、反码、补码
原码、反码、补码区别
116 0
正数、负数求原码、反码、补码
正数、负数求原码、反码、补码
194 0
|
Go 开发者
原码 反码 补码|学习笔记
快速学习原码 反码 补码。
62 0
|
Java
进制转换、原码、反码、补码及位运算详解
进制转换、原码、反码、补码及位运算的简单示例
483 1
进制转换、原码、反码、补码及位运算详解