导航:首页 > 源码编译 > 23的源码反码补码

23的源码反码补码

发布时间:2022-10-07 10:49:22

1. 单片机原理及应用中的十进制数与二进制数原码、反码、补码详细解答

首先得说明的一点,原码、反码、补码都是有符号定点数的表示方法。是吧,没有符号而言就不会出现+0与-0了呀,呵呵。
原码就是这个数本身的二进制形式。
例如:0000001 就是+1 1000001 就是-1
首先要说明的是:正数的反码和补码都是和原码相同的;
还是再重申一下吧
〔1〕原码:这个数本身的二进制形式。 例如十进制的8的原玛就是01000,就是用二进制表示〔2〕反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
〔3〕补码:负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
正数没什么好讲的,就说说负数吧:负数的原码,依旧是一个数本身的二进制形式,也就是说十进制的-8的原码就是11000[注意,第一位1是符号'-'哦];反码呢,将二进制数按位取反,所得的新二进制数称为原二进制数的反码。取反操作指:原为1,变为0;原为0,变为1。(1变0; 0变1),这个简单理解吧。实际上,这样说不够准确,因为我们还要除掉符号位再这样取反。
看好了-8的原码:11000----->-8的反码就是原码除了符号位之后的其他位都按位取反10111

符号位
-8原码 1 1 0 0 0
-8反码 1 0 1 1 1

现在懂什么是原码和反码了吧,我已经尽力了,呵呵。好啦,该补码登场啦。
补码,简单地说就是反码末位〔最后一位〕+1
为什么要设立补码呢?
第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补
第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)

我不知道朋友您看了上面的是否真的懂了,或许还不知道什么叫做”溢出”吧

所谓的溢出就是当我们要表示的数位不够表示了

我们的二进制的位数一般有个具体的范围:

例如一个字节就是8位,超过8位当然就溢出了

以8位为例子,看好啦

符号位

0 1 1 1 1 1 1 1 1

+ 0 1

------------------------------------

0 [1]0 0 0 0 0 0 0 0

[1]表示就是进位没地方放了,怎么说呢,好象在十进制中,我有99个盒子已经装了99对鞋子,当第 100双鞋子没地方放了一样,超出了盒子个数,这样就产生了所谓的溢出了

好,我们再回到上面反码的例子,(别忘记我们是在介绍反码了)

符号位

[ 1 0 0 0 0 0 0 0]补

=〔 1 0 0 0 0 0 0 0]反+1
= 1 1 1 1 1 1 1 1 ------看到反码的取反操作在其中哦,0都变成1

+ 1

----------------------------------
= 1 (1) 0 0 0 0 0 0 0
= 0 0 0 0 0 0 0 0(最高位溢出了,符号位变成了0)

看到符号位也参与了计算一样1+1就变成了0,至于进位的1就丢失了

从而变成了全0

现在我们再来看看,原码 +0 的补码就是:0000 0000〔原因是补码和原玛是一样的〕

原玛 -0 的补码就是:0000 0000

是不是一样了,这样就消除了二异性了,不要说有-0与+0之分了

不知道朋友您是否还会觉得有什么不妥呢????
也许你会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个

原码,反码,补码 都是指二进制的形式,所以十进制的对应码为二进制数,注意负数的符号位,二进制数的码制转换就按照我上面说的啦,看仔细,多想一想,捡几个数做做练习一下,你就会啦,关键是练习。

其实就是这样的,单片机中的也就是计算机中的码制转换,单片机也叫微机嘛,即微型计算机,呵呵

2. 十进制数负23的原码,反码,补码表示形式

原码:10010111 反码:11101000 补码:11101001 正数原码反码补码一样,负数反码为原码除符号位其余按位取反,补码为反码加一

3. 写出23.3的二进制数的原码表示,反码表示,补码表示

23.3的二进制原码反码补码分别是什么呢?

正数原码反码补码相同把23.3转化为二进制
23:10111除二取余逆序排序
0.3:01001保留六位有效数字,乘而取整,正序排列
23.3:1011101001

扩展内容:

bit(位):数据存储的最小单元。在计算机二进制系统中,位,简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中每 8bit = 1 byte(字节);

二进制

二进制在计算机技术中广泛应用。二进制数用0和1两个数字及其组合来表示任何数,二进制的进位规则是:“逢2进1”。数字1在不同的位上代表不同的值,按从右至左

的次序,这个值以2倍递增。

无符号数和有符号数

在计算器中参与运算的数有两大类:无符号数和有符号数

(1)有符号数:

对于有符号数而言,符号的正、负机器是无法识别的,但由于“正、负”恰好是两种截然不同的状态,如果用“0”表示“正”,用“1”表示“符”,这样符号也被数字化了,

并且规定将它放在有效数字的前面,即组成了有符号数。所以,在二进制中使用最高位(第一位)来表示符号,最高位是0,表示正数;最高位是1,表示负数。

(2)无符号数:

无符号数是针对二进制来讲的,无符号数的表数范围是非负数。全部二进制均代表数值(所有位都用于表示数的大小),没有符号位。即第一个"0"或"1"不表示

正负。

例子:

(1)在Java中int数据类型是怎么在计算机中表示的呢?

在二进制系统中是以bit(位)来作为数据存储单元的(详细内容请看前言),假设 int number = 1 ,那么number在计算机系统中将表示如下:

00000000 00000000 00000000 00000001

同理可得,number=-1 时,在二进制中表示如下:

10000000 00000000 00000000 00000001

注意:最高位(第一位)是符号位,因为是number值为1是一个正数,所以最高位为0;

(2)二进制转十进制?

要从右到左用二进制的每个数去乘以2的相应次方(次方要从0开始算起);

假如:二进制数1101转化成十进制 ,那么 1101 = 1*20+0*21+1*22+1*23 = 1+0+4+8 = 13;

注意:任何数的0次方都是1。

二进制中的原码、反码、补码

对于有符号数而言:

(1)二进制的最高位是符号位:0表示正数,1表示负数

(2)正数的原码、反码、补码都一样;

(3)负数的反码 = 它的原码符号位不变,其他位取反(0 ->1 ; 1->0 );

(4)负数的补码 = 它的反码 +1;

(5)0的反码、补码都是0;

(6)在计算机运算的时候,都是以补码的方式来运算的;

例子:

下面我们就使用“有符号数”来模拟一下,在计算机中是怎样运算的。

(1)正数相加:

例如:1+1 ,在计算机中运算如下:

1的原码为:

00000000 00000000 00000000 00000001

因为“正数的原码、反码、补码都一样”,所以,1的补码 = 1的原码,所以 1的补码+ 1的补码 就等于:

00000000 00000000 00000000 00000001

+

00000000 00000000 00000000 00000001

=

00000000 00000000 00000000 00000010

00000000 00000000 00000000 00000010( 转换为10进制) = 0*2^0 + 1*2^1 = 0 + 2 =2

(2)正数相减:

例如:1-2,在计算机中运算如下:

在计算机中减运算其实是作为加运算来操作的,所以,1-2 = 1 + ( -2 )

第一步:把 1补码找出来(因为正数的原码、反码、补码都一样,所以我们可通过原码直接获取补码):

1的补码:

00000000 00000000 00000000 00000001

第二步:把-2的原码找出来:

-2的原码:

10000000 00000000 00000000 00000010

第三步:把-2的反码找出来:

-2的反码:

11111111 11111111 11111111 11111101

第三步:把-2的补码找出来:

-2的补码:

11111111 11111111 11111111 11111110

第四步:1的补码与-2的补码相加:

00000000 00000000 00000000 00000001

+

11111111 11111111 11111111 11111110

=

11111111 11111111 11111111 11111111

第五步:将计算结果的补码转换为原码,反其道而行之即可(如果想将二进制转换为十进制,必须得到二进制的原码)

补码:11111111 11111111 11111111 11111111

=

反码:11111111 11111111 11111111 11111110

=

原码:10000000 00000000 00000000 00000001

第六步:将计算结果的二进制原码 转换 为十进制

二进制原码:10000000 00000000 00000000 00000001 = 1*2^0 = -1

4. 假定某台计算机的机器数占8位, 请写出十进制数-23的原码、反码和补码

因为数据在计算机中都是以二进制表示的,编译系统对于不同类型的变量分配不同大小的存贮空间,制定不同的取值范围。比如整型在计算机中的存储用2个字节16位的存储空间,其中的最高位代表符号位的,符号位为0表示的是正数,符号位为1表示为负数,整型数据在内存中以二进制的补码存放。
以10和-10说明正数在内存中的存放形式:
例如:十进制
10
-10
二进制原码
0000000000001010
1000000000001010
二进制反码
0000000000001010
1111111111110101
二进制补码
0000000000001010
1111111111110110
所以:-23在计算机的机器数占8位的
二进制原码为10010111
二进制反码为11101000
二进制补码为11101001

5. -23原码、反码和补码

-23源码10010111
-23反码11101000
-23补码11101001

6. 十进制数负23的原码,反码,补码表示形式

原码:10010111
反码:11101000
补码:11101001
正数原码反码补码一样,负数反码为原码除符号位其余按位取反,补码为反码加一

7. +23和-23的原,反,补码

一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同
二、负整数的符号位固定为1,由原码变为补码时,规则如下:
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码
2、反码符号位1不变,反码数值位最低位加1,得到补码

阅读全文

与23的源码反码补码相关的资料

热点内容
一个女程序员的声音 浏览:491
魔术app怎么用 浏览:338
单片机有4个8位的io口 浏览:895
win10rar解压缩软件 浏览:166
plc教程pdf 浏览:668
pythonshell清屏命令 浏览:279
检测到加密狗注册服务器失败 浏览:204
解压后手机如何安装 浏览:518
极客学院app为什么下架 浏览:14
图片批量压缩绿色版 浏览:652
东北程序员帅哥 浏览:707
加密封条风噪小 浏览:974
安阳少儿编程市场 浏览:499
云服务器建设原理 浏览:259
javajunit4for 浏览:847
华为服务器如何进阵列卡配置 浏览:435
apache服务器ip地址访问 浏览:720
如何买到安卓手机预装软件 浏览:537
冤罪百度云不要压缩 浏览:89
苏州云存储服务器 浏览:179