正数、负数求原码、反码、补码

简介: 正数、负数求原码、反码、补码

二进制,有符号数,首位为1的是负数,首位为0的是正数。(规定) 无符号数没有正负之分,所以也没有首位的限制。(规定) (以下示例皆以八位二进制表示)

无符号数 无符号数的原码、反码、补码都一样,皆为该数的二进制表示法

原码 反码 补码 定义 无符号数的原码为该数的二进制表示法 无符号数的反码与原码一样 无符号数的补码与原码一样

举例 1(无符号数)==>0000 0001(原码)==>0000 0001(反码)==>0000 0001(补码)

正数 正数的原码、反码、补码都一样,皆为该数的二进制表示法(同无符号数差不多)

原码 反码 补码 定义 正数的原码为该数的二进制表示法。 正数的反码与原码一样。 正数的补码与原码一样

举例 1==>0000 0001(原码)==>0000 0001(反码)==>0000 0001(补码) (首位为0的表示正数,所以原码、反码和补码的首位都是0)

负数 原码 定义 负数的原码为该数对应的无符号数的二进制,将首位置1。

举例 -1==>1(无符号数)==>0000 0001(无符号数的二进制)==>1000 0001(原码,首位置1)。 (负数的首位为1)

反码 定义 负数的反码为该数原码的符号位不变,其它位取反。

举例 -1==>1000 0001(原码)==>1111 1110(反码,符号为不变,其它位取反)。 (负数的首位为1)

补码 定义 1、负数的补码为该数对应的无符号数的二进制取反加一。 2、负数补码(首位为1)减一,取反表示的是这个数的无符号数的二进制。

举例 1 -128==>128(无符号数)==>1000 0000(-128的无符号数的二进制)==>0111 1111(取反)==>1000 0000(补码,加一)(负数的首位为1) -1==>1(无符号数)==>0000 0001(-1对应无符号数的二进制)==>1111 1110(取反)==>1111 1111(补码,加1)(负数的首位为1)

2 1000 0000(补码) ==> 0111 1111(减一) ==> 1000 000(取反,无符号数128)==> -128(负数)(负数的首位为1) 1111 1111(补码) ==> 1111 1110(减一) ==> 0000 0001(取反,无符号数1) ==> -1(负数)(负数的首位为1)

后记 计算机皆使用补码。用补码计算,符号位也可以参与运算。若以原码计算,符号位参与运算数据会出错,所以还需要标识符号位,会造成电路设计复杂,故抛弃。若以反码计算,会存在+0与-0的问题,而0在人们的常识中是不存在正负之分的,所以也抛弃。 补码取反加一为该数的相反数(补码) eg: 1 ==> 0000 0001(补码)==>1111 1110(取反) ==>1111 1111(加1) ==> -1 因为二进制有位数限制,所以表示的数大小也有限制,8位表示的无符号数返回为0(0000 0000(补码))~256(1111 1111(补码)),有符号数为-128(1000 0000(补码))~127(0111 1111(补码))

相关文章
|
6月前
原码、反码、补码的互相转换
原码、反码、补码的互相转换
159 0
|
6月前
|
存储
原码,补码的除法
原码,补码的除法
81 1
|
6月前
原码反码补码移码的介绍和计算
原码反码补码移码的介绍和计算
143 1
|
6月前
|
存储
原码,反码,补码以及计算
原码,反码,补码以及计算
81 0
|
机器学习/深度学习 存储
数据的表示:原码、反码、补码、移码以及浮点数的运算
数据的表示:原码、反码、补码、移码以及浮点数的运算
478 0
数据的表示:原码、反码、补码、移码以及浮点数的运算
原码、反码、补码的互换
计算机中国的有符号数(整数)有三种表达方式,即原码、反码、补码。
原码补码反码
原码补码反码
134 0
|
Java
进制转换、原码、反码、补码及位运算详解
进制转换、原码、反码、补码及位运算的简单示例
661 1
进制转换、原码、反码、补码及位运算详解
|
存储
一篇轻松带你Carry原码、反码、补码(建议收藏)
一篇轻松带你Carry原码、反码、补码(建议收藏)
219 0
原码、反码、补码
原码、反码、补码区别
164 0