首页 > 其他分享 >数据表示——原码/反码/补码/移码

数据表示——原码/反码/补码/移码

时间:2024-03-21 23:02:44浏览次数:31  
标签:反码 示例 二进制 补码 数值 移码 原码

计算机中的数值信息分成整数和实数两大类。整数不使用小数点,或者说小数点总是隐含在个位数的右边,所以整数也称为“定点数”。相应地,实数也称为“浮点数”。计算机在存储或运算时,需要采用一种编码形式表示数值,这种表示方式就分为原码、反码和补码。

1. 原码

最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值(真值)。

数值+0-0
原码(按8位二进制示例)0 00000001 0000000
数值+2-2
原码(按4位二进制示例)0 0101 010

原码运算——加法

运算数值原码原码转十进制
1000000011
+2000000102
=3000000113

原码运算——减法

运算数值原码原码转十进制
1000000011
+-110000001-1
=010000010-2

注意,计算机中减法相当一个正数加上一个负数,原码减法出现问题,一个数加上它本身的相反数不等于0,于是反码登场。

2.反码

正数的反码,等于原码。
负数的反码,按原码除符号位外,其它位取反。

数值+0-0
原码(按8位二进制示例)0 00000001 0000000
反码(按8位二进制示例)0 00000001 1111111
数值+2-2
原码(按4位二进制示例)0 0101 010
反码(按4位二进制示例)0 0101 101

之前原码中减法出现问题,一个数加上它本身的相反数不等于0,我们现在用反码再试一下。

运算数值原码反码反码转原码转十进制
100000001000000011
+-110000001111111110-1
=0-11111111-0

反码相加的最后结果11111111,要先转成原码(即除符号位外的相反数)为10000000,原码再转十进制,最终结果为-0(负零也是零,算是对了吧!)。

那么,如果(-1)+(-3)结果是多少?

运算数值原码反码反码转原码转十进制
-11000000111111110-1
+-31000001111111100-3
=-4-11111010-5

注意,两个不同负数值相加,采用反码运算的结果也不正确,于是补码登场。

3.补码

正数的补码,等于原码。
负数的补码,等于反码+1。

数值+0-0
原码(按8位二进制示例)0 00000001 0000000
反码(按8位二进制示例)0 00000001 1111111
补码(按8位二进制示例)0 00000000 0000000
数值+2-2
原码(按4位二进制示例)0 0101 010
反码(按4位二进制示例)0 0101 101
补码(按4位二进制示例)0 0101 110

负数还有一种计算补码的方法,公式:负数的补码 =(2机器数长度次幂 - |负数的绝对值|)的原码
例如,若机器字长为4,求-2的补码。
套入公式过程如下:
( 24 - 2) = 14,
14的原码 = 1110,
-2的补码 = 1110。

之前反码计算不同负数值相加出现问题,我们现在再用补码试一下。

运算数值原码反码补码补码转十进制
-11000000111111110111111111-1
+-3100000111111110011111101-3
=-4--11111100-4

补码转十进制的过程如下:

补码11111100
补码的反码10000011
补码的反码的补码10000100
补码的反码的补码转十进制-(1*22) = -4

计算机中均采用补码进行加减运算。

标签:反码,示例,二进制,补码,数值,移码,原码
From: https://blog.csdn.net/markximo/article/details/136908997

相关文章

  • 原码、反码、补码以及位运算符
    对于有符号的而言:二进制的最高位是符号位:0表示正数,1表示负数(口诀0——>0,1——>-)。正数的原码、反码、补码都是一样的(三码合一)。负数的反码=它的原码符号位不变,其他位取反(0——>1,1——>0)。负数的补码=它的反码+1,负数的反码=负数的补码-1。0的反码、补码都是0。J......
  • 【C语言步行梯】各类操作符、类型转换与原码、反码、补码详谈
    ......
  • 整数和浮点数在内存中的储存(包含原反补码的讲解)
    在c语言中,我们常常使用整数和浮点数,那么你知道整数和浮点数在内存中是如何储存的吗?下面大家一起学习。文章目录一.整数在内存中的储存二.了解大小端字节序三.浮点数在内存中的储存一、整数在内存中的储存整数的二进制表示方法有三种:原码、反码、补码。有符号整数......
  • Java 源码,反码和补码
    计算机在对数据进行运算的原理?3-2=13+(-2)=1先将3这个十进制,变成二进制的原码形式,然后变成反码形式,最后变成补码形式先将-2这个十进制,变成二进制的原码形式,然后变成反码形式,最后变成补码形式将这两个数二......
  • 机器数存储(原码、反码、补码、移码表示范围、浮点数对阶)
    机器数:各种数值在计算机中表示的形式,其特点是使用二进制计数制,数的符号用0和1表示,小数点则隐含,不占位置。机器数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。真值:机器数对应的实际数值。原码、反码、补码正数......
  • KOA2框架原码解析和实现
    什么是koa框架?koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架,因为它所有功能都通过插件实现,这种插拔式的架构设计模式,很符合unix哲学。koa框架现在更新到了2.x......
  • 原码、反码、补码、移码
    原码、反码、补码、移码背景:为了解决计算机中减法计算的问题,因为计算机中只有加法器,减法的计算是要转换成加法才能进行。原码二进制首位为标志位正数标志位为00xxxxxxx负数标志位为11xxxxxxx示例:14=00001110-21=10010101反码正数:原......
  • 进制转换和原码、反码、补码
    进制转换进制介绍进制转换第一组:其它进制—>十进制二进制转十进制八进制转十进制十六进制转十进制第二组:十进制—>其它进制十进制转二进制规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。十进制转八进制规则:将该数......
  • 关于二进制的原码、补码和反码,以及表示范围、常见位运算符和进制转换的理解与简述
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17963363出自【进步*于辰的博客】参考笔记一,P3.13、P5.1;笔记三,P43.1/3、P44.1。注:我暂且没有整理关于二进制、原码、补码和反码等概念的理论,本文中的阐述都基于我对相应......
  • 运算符--原码、反码、补码
    运算符--原码、反码、补码原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。利用原码对正数进行计算是不会有问题的。但如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。原码的弊端:利用原码进行计算的时候,如果是正数完全没有问题。但是如果是......