原码反码补码移码的介绍和计算

简介: 原码反码补码移码的介绍和计算

1.原码


原码的定义:十进制数据的二进制表示形式就是原码。

(1)原码的最左边那位是符号位,其他位为数据位,符号位是0则为正数,符号位是1则为负数。

(2)一个byte有8bit,最大值是0111111(+127),最小值是11111111(-127)

正数计算:

5+2=7

00000101

+      0010

00000111


2.反码


反码出现的原因:原码用符号位来表示正负,所以负号难以和其他数进行计算,反码出现,作为负数的计算救星。

反码的定义:正数的反码等于本身,负数的反码是符号位保存不变,其余按位取反。比如10000101(-5负数原码)->11111010(反码)。

反码的最大值是0111111(+127),最小值是11111111(-127)

负数计算:10000101(十进制为-5)的反码11111010

-5-1=-6

11111010

-             1

11111001


把11111001转回原码是1000110 刚好为-6。

3.补码


补码的引入:反码也有缺点,如果是负数跨零进行计算的话,计算得出的结果不对,这时候,作为反码的补充编码-补码出现。

补码的定义:正数的补码是本身,负数的补码等于其反码+1。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)。

反码的最大值是+127,最小值是-128

跨零计算:

-5+3=-2

 11111011

+        0011            

 11111110


把11111110【补码】转回原码,对其反码+1得10000010,十进制为-2。

4.移码


移码的定义:正数的移码是本身,负数的移码等于其补码然后对符号位取反。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)->01111011(移码)。

计算:

-5+3=-2

 01111011

+        0011            

 01111110


把01111110【移码】转回原码,对其补码然后对符号位取反得10000010,十进制为-2。

5.原码、反码和补码的数据表示范围:

目录
相关文章
|
6月前
原码、反码、补码的互相转换
原码、反码、补码的互相转换
153 0
|
6月前
|
存储
原码,反码,补码以及计算
原码,反码,补码以及计算
80 0
|
机器学习/深度学习 存储
数据的表示:原码、反码、补码、移码以及浮点数的运算
数据的表示:原码、反码、补码、移码以及浮点数的运算
477 0
数据的表示:原码、反码、补码、移码以及浮点数的运算
原码、反码、补码的互换
计算机中国的有符号数(整数)有三种表达方式,即原码、反码、补码。
原码补码反码
原码补码反码
134 0
|
存储
数制间的转换,原码、反码、补码
数制间的转换,原码、反码、补码
770 0
数制间的转换,原码、反码、补码
|
存储
一篇轻松带你Carry原码、反码、补码(建议收藏)
一篇轻松带你Carry原码、反码、补码(建议收藏)
216 0
原码、反码、补码
原码、反码、补码区别
162 0
正数、负数求原码、反码、补码
正数、负数求原码、反码、补码
291 0
|
Java C++
快速理解原码、反码、补码
学弟不懂原码反码补码,气的我给女朋友彻底讲了一夜
367 0
快速理解原码、反码、补码