原码、反码、补码

2024/3/20 笔记

qaq

原码

  • 最左边是符号位,0为正、1为负
  • 因为只有符号位控制符号,所以负数加正数会变小,负数减正数会变大,所以负数的运算会有问题

反码

  • 为了解决原码不能计算负数的问题而出现的
  • 正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0
  • 因为-0的存在,跨越0会有问题

-56

  • 原码:10111000
  • 反码:11000111

补码

  • 负数的补码是反码+1
  • 正数的补码=原码=反码
  • 一个字节可以表示范围为: -128~127

位运算符

  • <<:左移,低位补0
  • >>:右移,高位补0或1。负数补1,正数补0
  • >>>:无符号右移,高位补0
img_show