正数、负数求原码、反码、补码
⼆进制,有符号数,⾸位为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(补码))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论