网站首页 > 资源文章 正文
- 补码作用:可以把减法按加法来处理;同时,还可以将符号位和其它位统一处理。
- 正数的补码与原码相同;
- 负数的补码是其反码加1。
我们以8位二进制为例,计算5-2=3,用二进制表示为:
00000101(原)+10000010(原)
=00000101(原)+11111101(反)
=00000101(原)+11111110(补)
=00000011
- 补码计算方法是在其原码的基础上, 符号位不变, 其余各位取反再加一,那么补码为什么要这么算,其中的原理是什么呢?
1、为什么要取反再加一?
仍以上面的8位二进制数为例,模是100000000,即2^8=256,十进制数2的8位二进制数表示是00000010,取反得到11111101,二者相加:00000010(原)+11111101(反)=11111111,而11111111+1=100000000(模),
由以上可以看出:二进制数原码加上取反后得到的值再加一就刚好得到模。而已知原码+补码=模,因此能够得出结论:补码等于原码取反加一,这是计算补码最简单的方法。在这个过程中,反码没有什么实质意义,它只是计算机为了计算补码时的一个中间量。
2、为什么符号位可以参与运算,和其它位统一处理?
在计算机中正数和负数存储方式是不同的,我们通过观察二进制数第一位是0还是1可以知道这个数是正数还是负数。如果它的第一位是0,那么它就是正数原码,如果它的第一位是1,那么它就是负数补码。这里的符号位其实是算出来的,所以它可以参与运算。
我们仍以8位二进制为例,计算2-5=-3,用二进制表示为:
00000010(原)+10000101(原)
=00000010(原)+11111010(反)
=00000010(原)+11111011(补)
=11111101
计算结果11111101第一位为1,那么这个数值是负数补码,反求原码=(00000010)反+1 =00000011= 十进制数3,由此可知,11111101表示的是负数的3,在运算过程中我们没有考虑符号位,仅用单纯的加法运算进行运算,而得到的结果11111101也没有人为去添加一个符号位,符号位是计算所得的,因为在计算过程中存在第一位为0则是正数,为1则是负数这个规律,于是我们认定第一位为符号位,也就是先有规律之后才有规定。
猜你喜欢
- 2024-09-08 1.2 计算机内信息的表示与存储(计算机内部信息的表示及存储采用的是)
- 2024-09-08 C++手撕底层:位、字节、原码、反码、补码的深入理解
- 2024-09-08 算法水题练习(二)(算法题模板)
- 2024-09-08 二进制是怎么减法运算的?(二进制是怎么减法运算的原理)
- 2024-09-08 “原码、反码、补码”计算机如何更好的实现算法?
- 2024-09-08 PLC的加、减、乘、除指令有什么用?其实功能十分强大!
- 2024-09-08 【1682023】指令:NEG(088)—— 完成二进制求补的功能指令
- 2024-09-08 C语言-自运算、位运算、取反运算(c语言位运算的运算规则)
- 2024-09-08 软件设计(十三)-原码、反码、补码、移码
- 2024-09-08 原码、反码和补码:深度解析C语言中的二进制表示
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)