美文网首页Julia语言
计算机中的补码是什么?

计算机中的补码是什么?

作者: Julia语言 | 来源:发表于2018-08-24 08:34 被阅读61次

欢迎关注Julia语言微信公众账号 julia_language

原文链接:http://suo.im/4SltFb

简介

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

  • 正整数的补码是其二进制表示,与原码相同
  • 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1

具体怎么算

Julia中,可直接在二进制,八进制和十六进制数前面加上一个负号 - ,就可以获得其补码:

julia> -0x5
0xfb

julia> -0x0002
0xfffe

-0x5是16进制的-5,且类型是UInt8。将其对应正数(也就是5)用二进制表示就是0000 0101。然后按位取反变为1111 1010,然后再加1,变为1111 1011。转换为16进制就是0xfb。

-0x0002是6进制的-2,且类型是UInt16。将其对应正数(也就是2)用二进制表示就是0000 0000 0000 0010。然后按位取反变为1111 1111 1111 1101,然后再加1,变为1111 1111 1111 1110。转换为16进制就是0xfffe。

为什么要有补码

原因很简单,如果使用补码表示负整数,那么算术逻辑单元ALU(Arithmetic and Logic Unit)在做整数之间的操作时,就不用区分符号了,所有位都会参与运算。

例如执行2-1这个操作,我们可以用2+(-1)来计算。
2的二进制数是:00000010
1的二进制数是:00000001 --> -1的二进制补码是:11111111
所以2+(-1):

  00000010
+ 11111111
----------------
  00000001

求1-2的结果,用1+(-2)来计算。
2的二进制数是:00000010,所以-2的二进制数为:11111101+1=11111110
1+(-2)的计算过程是:

  00000001
+ 11111110
---------------
  11111111

首位是1,说明是个负数,即是使用补码表示的,将各位取反(00000000)加1后的结果是00000001=1(十进制),然后加上他的符号,就是-1了,
所以1+(-2)的结果是-1 。

用补码计算确实简化了ALU的设计难度!!所以计算机用补码来表示负整数!!!!

欢迎关注微信公众账号Julia语言.jpg

相关文章

  • Python位运算

    计算机中有原码,反码,补码的概念。计算机只能储存数字数据,而且是数字的补码,运算时也通过补码,因为计算机中只有加法...

  • 计算机中二进制补码的运算原理

    在计算机中负数以补码形式表示,计算负数补码的方法是符号位不变,其余位按位取反再加1。简言之,补码是计算机中用来表示...

  • Java中高位转低位溢出的计算过程

    结果是: 计算机中是以补码进行计算 正数的反码补码都是原码,如:10原码: 1010反码: 1010补码:1010...

  • 补码与反码

    计算机中存储数据 都是以 补码的形式存储 正数: 补码 = 原码 负数 : 对应正数的原码 --> 取反 -...

  • 计算机为什么用补码来计算

    计算机中数字都是用二进制来表示的,有三种编码方式:原码、反码、补码,而计算中用到最多的就是补码,原因是什么呢?让我...

  • int数字的表示

    在计算机中int型数字使用补码的形式在存储。首先说明补码的计算方式。正数和零的补码就是他们本身。负数的补码是符号位...

  • 负数在内存中的表示方式

    在计算机中数值是以二进制补码形式存在的。 正数的补码不变 负数的补码为 原码 ->取反 -> 加一以 -112...

  • 计算机编码相关问题

    整数在计算机中的编码 整数在计算机中是以补码的形式存储的, 补码和原码的区别在负数上。 下面代码上展示了10这个整...

  • 计算机中的补码是什么?

    欢迎关注Julia语言微信公众账号 julia_language 原文链接:http://suo.im/4SltF...

  • 补码

    计算机中用补码来表示负数。以Java语言为例,int类型为32位4字节。 怎么求补码? 正数的补码为其本身;负数的...

网友评论

    本文标题:计算机中的补码是什么?

    本文链接:https://www.haomeiwen.com/subject/tffviftx.html