zoukankan      html  css  js  c++  java
  • 10.原码 反码 补码

    +7的原码:0000 0111 

    -7的原码:1000 0111   第一位0代表正数,1代表负数,第一位为符号位

    +7的反码:0000 0111 正数反码和原码一样

    -7的反码:1111 1000  符号位不变,其他取反

    +7的补码:0000 0111 正数补码和原码一样

    -7的补码:1111 1001 十六进制为:F9 负数的补码原码取反再加一


    举个例子:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main()
     5 {
     6     char ch = -17;
     7     //0001 0001 +17原码 
     8     //1001 0001  -17原码
     9     //1110 1110 反码
    10     //1110 1111 -17补码  十六进制:ef
    11     printf("%p", &ch);
    12 
    13     getchar();
    14 
    15 }

    查看内存变量:  

    规律:

    正数:原码,反码,补码,正数都是一样的

    负数:原码取反(不包括符号位)+1 = 补码


     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 void main()
     5 {
     6     int num = -1;
     7     //0000 0000 0000 0000 0000 0000 0000 0001  +1原码
     8     //1000 0000 0000 0000 0000 0000 0000 0001  -1原码
     9     //1111 1111 1111 1111 1111 1111 1111 1110  -1反码
    10     //1111 1111 1111 1111 1111 1111 1111 1111  -1补码
    11     printf("%u", num);
    12 
    13     getchar();

    结果:


    补码的好处:

    +7补码:0000 0111  补码为:0000 0111

    -1补码:1000 0001   补码为: 1111 1111

             补码和为: 0000 0110 换成原码就是+6            

    +7补码:0000 0111 

    -9补码:  1111 0111

    和为:      1111  1110

    反码为:   1000 0001 

    再加1 :    1000 0010 代表的数为-2

  • 相关阅读:
    POJ 1795 DNA Laboratory
    CodeForces 303B Rectangle Puzzle II
    HDU 2197 本源串
    HDU 5965 扫雷
    POJ 3099 Go Go Gorelians
    CodeForces 762D Maximum path
    CodeForces 731C Socks
    HDU 1231 最大连续子序列
    HDU 5650 so easy
    大话接口隐私与安全 转载
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8094196.html
Copyright © 2011-2022 走看看