zoukankan      html  css  js  c++  java
  • C++中的最大整数最小整数

    调用<limits.h>

    INT_MIN, INT_MAX

    利用原码、补码、反码及位运算

    1. 机器数与真值
      机器数:在计算机中实际存储的数,如0000 0001
      真值:去掉符号位,根据编码规则推导出的真实值
    2. 原码
      原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。(一种非常容易理解的方式)

    正负1的原码表示:

    [+1] = 0000 0001
    [-1] = 1000 0001
    

    8位二进制数,原码能表示的范围为:

    [0111 1111 1111 1111]---->[2^7-1 -2^7-1]---->[-127 127]
    
    1. 反码
      反码就是在原码的基础上,符号位不变,其余位取反。 (显然,正数的反码还是本身)
      正负1的反码表示:
    [+1] = 0111 1110
    [-1] = 1111 1110
    
    1. 补码
      正数的补码就是本身,复数的补码就是其反码加一
      正负1的补码表示:
    [+1] = 0000 0001 (补)
    [-1] = 1111 1110(反)= 1111 1111(补) 
    
    1. 为什么要用补码进行运算?
      将减法简化为加法(减去一个正数等于加上这个正数的相反数),且保持只有一个0的表示。(https://blog.csdn.net/wo17fang/article/details/52241682)

    6.表示最大最小的整数
    看了上面的解释,下面的定义就是自然而然了

    int max_int = 0b0111 1111 1111 1111;
    int min_int = max_int+1;
    

    进一步简写为:

    #define MAX_INT (((unsigned int)(-1))>>1)
    #define MIN_INT MAX_INT+1
    
  • 相关阅读:
    数论 UVA 10943
    数论 UVA 11889
    数论 UVA 11388
    UVA 572
    hdu 1016
    poj 1308
    poj 1363
    java web-----servelet
    java IO文件读写例子(OutputStream,InputStream,Writer,Reader)
    java web环境配置类型问题
  • 原文地址:https://www.cnblogs.com/maxwell-maxwill/p/15405312.html
Copyright © 2011-2022 走看看