zoukankan      html  css  js  c++  java
  • 数字在计算机中的表示

      现实生活中,我们通常使用10进制来表示我们的数字,而在计算机中使用的是“0”和“1”表示数字的二进制。

      如果我们用一个字节来存储一个数字,那么这个数字在计算机中的存储形式可能是这样的:00010011。最左边的0位在带符号数字中用来表示正负号,0代表正号,1代表负号,所以它也就叫做符号位;其他位数用来表示具体数字,因此叫做数值位。

      00010011如果用来表示带符号整数,那么它代表的数字是+19。+19叫做真值,00010011用于在计算机中表示,所以叫做机器数

      机器数在计算机中的表示形式有三种,原码,反码和补码。

      原码的表示:

        左边是符号位,正数为0,负数为1。其他位表示数值

        【+10】原码 = 00001010

        【-10】原码 = 10001010 

        【+0】原码 = 00000000

        【-0】原码 = 10000000

      反码的表示:

        正数的反码和原码相同,负数的反码由原码除了符号位的其余位取反(即0表1,1表0)

        【+10】反码 = 00001010

        【-10】反码 = 11110101

        【+0】反码 = 00000000

        【-0】反码 = 11111111

      补码的表示:

        正数的补码与原码相同,负数的补码由原码的反码加1得到

        【+10】补码 = 00001010

        【-10】补码 = 【-10】反码 + 1 = 11110101 + 1 = 11110110 

        【+0】补码 = 00000000

        【-0】补码 = 【-0】反码 + 1 = 11111111 + 1 = 【1】00000000(mod(256))

      补码的意义:补码实际上是一种模运算,以时钟为例,时钟一圈是12个小时,即时钟的模为12。如果当前时刻是3点钟,在12个小时之后时刻变为15点,15在模12之后,依然是3点。再如,将3点的时针调慢一个小时,即调成2点,和将时针向前调整11个小时的效果是一样的。因此用3-1和(3+11)mod(12)的结果一样。补码在机器码中的运用主要是用加法元算代替减法运算。CPU的加法器简单效率高,因此不需要再专门实现减法器。

      在8位字中,我们的模就是2的8次方,即256。例如:

        直接减法:01000000(64)— 00001010(10) = 00110110(54)

        用补码代替减法:01000000(64)+(11110110)(246)= 00110110(54) 

      两种运算结果是一样的。

  • 相关阅读:
    7.10.8107.79 小心80180048
    Sliverlight MD5
    WP 数据绑定Visibility
    WP7 剪贴板 Clipboard
    [10年之后我是谁]读书笔记
    linux面试题
    [你的灯亮着吗]读书笔记
    Linux命令行简明教程
    <Ruby入门教程>读书笔记
    [职场谎言系列]读书笔记
  • 原文地址:https://www.cnblogs.com/iRidescent-ZONE/p/4203183.html
Copyright © 2011-2022 走看看