zoukankan      html  css  js  c++  java
  • 获取整数的最大值最小值

    c/c++常需要获得最大值,最小值,通常这两个数与平台和操作系统有关,因此可移植的办法就是推荐使用库函数提供的常量定义

    1. 利用语言自定义

    类似的常量定义在limits.h和float.h头文件中。在头文件中,整数的最值通常是这样的名字:INT_MAX, INT_MIN,直接使用即可。

    2. 自定义变量

    int MAX_INT = ((unsigned)(-1))>>1;
    int MIN_INT = ~MAX_INT;

    解释

    int占4个字节。-1是有符号数,默认用补码表示,二进制表示为32个1,如果强制解释为无符号数,那么

    (unsigned)(-1)

    =(11111111 11111111 11111111 11111111)2(无符号数)

    =2^0+2^1+2^2+....+2^31

    =2^32-1

    =4294967295

    那么右移一位

    (unsigned)(-1)>>1

    =(01111111 11111111 11111111 11111111)2(无符号数)

    =2^31-1

    =2147483647

    程序例证

    #include <iostream>
    using namespace std;
    int main()
    {
        int max_int = (unsigned)(-1) >> 1;
        int min_int = ~max_int;
        cout << (signed)(-1) << endl;
        cout << (unsigned)(-1) << endl;
        cout << max_int << "	" << min_int << endl;
    }

    结果

    注意

    ~(unsigned(-1) >> 1) = 2147483648(无符号的)

    ~max_int = 2147483648(有符号的)

  • 相关阅读:
    Oracle的序列、视图、索引和表空间
    MySQL存储过程
    MySQL触发器
    MySQL索引和视图
    完整性约束
    Mybatis的核心对象及运行流程
    Mybatis中配置连接池
    IDEA中创建Maven工程整合Mybatis
    Idea中创建JavaWeb工程
    实现整数集合的并、交、差运算
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/3530000.html
Copyright © 2011-2022 走看看