二进制的原码、反码、补码及相关计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⼆进制的原码、反码、补码及相关计算
1.⼆进制的最⾼位是符号位,0表⽰正数,1表⽰负数
2.正数的原码、反码、补码都⼀样
3.负数的反码=它原码符号位不变,其他位取反(0->1,1->0)
4.负数的补码=它的反码+1
5.0的反码、补码、都是0
6.php没有⽆符号数,就是说php中的都是有符号的
7.在计算机运算的时候都是以补码的⽅式来运⾏的
1如:
2以下实例都以4个字节举例说明
3 1 ---->原码 00000000 00000000 00000000 00000001
4 1 ---->反码 00000000 00000000 00000000 00000001
5 1 ---->补码 00000000 00000000 00000000 00000001
6
7 -1 --->原码 10000000 00000000 00000000 00000001
8 -1 --->反码 11111111 11111111 11111111 11111110 //符号位不变,其他位取反
9 -1 --->补码 11111111 11111111 11111111 11111111 //等于反码+1
1求~2的结果
2 2 --->原码 00000000 00000000 00000000 00000010 //正数的原码、反码、补码都⼀样,所以可以直接按位运算
3 2的补码取反
4 00000000 00000000 00000000 00000010 ===> 11111111 11111111 11111111 11111101 //取反后变为负数,再按照负数求反码的规则得到反码
5取反后结果还是补码,再求反码
6 11111111 11111111 11111111 11111101 ===> 11111111 11111111 11111111 11111100 //负数的反码=它的补码-1
7再根据反码求原码
8 11111111 11111111 11111111 11111100 ===> 10000000 00000000 00000000 00000011 //负数符号位不变,0变1,1变0
9 10000000 00000000 00000000 00000011 ===> -3
10所以~2 = -3
1求~-5的结果
2 -5 --->原码 10000000 00000000 00000000 00000101
3根据原码得到反码
4 -5的原码取反 --->11111111 11111111 11111111 11111010 //符号位不变(0->1,1->0)
5根据反码得到补码
6 -5的补码 ---> 11111111 11111111 11111111 11111011 //负数的补码=反码+1
7再将补码取反
8 11111111 11111111 11111111 11111011 ===> 00000000 00000000 00000000 00000100 //计算机底层运算都是在补码的基础上计算的,所以先得到补码再逐位取反
9 00000000 00000000 00000000 00000100 是正数,它的反码、原码和补码⼀样
10 00000000 00000000 00000000 00000100 ===>4
11所以~-5 = 4。

相关文档
最新文档