计算机入门之——原码反码和补码

原码反码和补码

  • 计算机常见数据的分类

  • 机器数&机器数的真值

  • 原码

  • 反码

  • 补码

  • 扩展

    计算机中常见数据的分类

  • 数值类型

    • 整数
    • 浮点数
  • 非数值类型

    • 图片
    • 音频
    • 视频
    • 文字

机器数

数值在计算机中的二进制表示形式

注意:==机器数==是带==有符号==的 最高位是符号位,使用==0表示正数==,==1表示负数==

5>0000 0101

一个数据使用表示时,第一位是符号位,剩余是有效位。

字有16位,1位是符号位,15位是有效位

int>整数 4个字节 32位 取值范围:-231~231-1

-2147483648~2147483647

long>长整型8个字节64位 -263~263-1

1000 0111=-7

真值

机器数所对应的二进制的真正数值

==1==000 0111=-7

==0==000 1111=15

原码

原码就是符号位+真值的绝对值

正数:符号位 有效位 +11>000 1011

负数:符号位 有效位 -15>取绝对值15>1000 1111

反码

正数:正数的反码=原码

负数:符号位不变,其余各位逐一取反

[图片上传失败...(image-c698e-1594210556569)]

补码

正数的原码=反码=补码

负数:在负数反码的基础上+1

扩展

为什么需要反码和补码?

在设计计算机时,只涉及了加法器,没有设计减法器

反码:解决了只设计加法运算的问题

缺点:正负相加0的表示不唯一

1-1=1+(-1)

1=0000 0001【反码】

-1=1000 0001【原码】

-1=1111 1110【反】

补码【高位溢出】

1=0000 0001【补码】

-1=1111 1111【补码】


​ 0000 0000

使用条件:不得超过表达范围

使用补码计算

32+12=44

因为负数的补码不能直接读出结果,但是原码可以,将原码转原码,才能读出结果

原码:补码的补码:将补码当原码求补码

计算规则“符号位不变,其余取反,然后加1.

求-128 的补码

一个字节不可以表示-128的原码

1000 0000 1000 0000【-128的原码】

求反码

1111 1111 0111 1111【反码】

0000 0000 0000 0001【加1】


1111 1111 1000 0000【-128的补码】

你可能感兴趣的:(计算机入门之——原码反码和补码)