资讯专栏INFORMATION COLUMN

32位int溢出转成正数

young.li / 2133人阅读

摘要:在位系统平台例如下,是位的,溢出后返回的是负数。拿到这个负数,在位平台下位负数转为正数,必须支持位,否则不转换

在32位系统平台(例如:windows)下,int是32位的,溢出后返回的是负数。拿到这个负数,在64位平台下

    /**
     * uid 32位负数转为正数,必须php支持64位,否则不转换
     * @param  int $num
     * @return int
     */
    function uid32FixNegative($num)
    {
        if(PHP_INT_SIZE == 4 || !is_int($num) || $num >= 0) {
            return $num;
        }
        $bin = decbin($num);
        return bindec(substr($bin, -32));
    }

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31724.html

相关文章

  • [Leetcode] Reverse Integer 反转整数

    摘要:字符串法复杂度时间空间思路先将数字转化为字符串,然后将字符串倒序输出,并转回数字。模十法复杂度时间空间思路通过对数字模十取余得到它的最低位。除了检查溢出返回特定值以外,有没有别的方法处理溢出可以使用代码块排除异常。 Reverse Integer Reverse digits of an integer.Example1: x = 123, return 321Example2: x ...

    ad6623 评论0 收藏0
  • 负数的运算问题

    摘要:位运算和无符号位运算对于负数而言,普通位运算已然保持了符号位,而是将真值部分进行位运算。大数向小数的溢出问题直接进行位运算,默认输出值的类型为等小数将会自动扩充成进行位运算,则使用位位运算。 原码、反码和补码一个数可以分成符号位(0正1负)+ 真值,原码是我们正常想法写出来的二进制。由于计算机只能做加法,负数用单纯的二进制原码书写会出错,于是大家发明了反码(正数不变,负数符号位不变,...

    lewinlee 评论0 收藏0
  • JS数值

    摘要:由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。根据标准,位浮点数的指数部分的长度是个二进制位,意味着指数部分的最大值是的次方减。也就是说,位浮点数的指数部分的值最大为。 一 前言 这篇文章主要解决以下三个问题: 问题1:浮点数计算精确度的问题 0.1 + 0.2; //0.30000000000000004 0.1 + 0.2 === 0.3; // ...

    williamwen1986 评论0 收藏0
  • Java运算符浅析

    摘要:在学习源码中,发现有大量使用位运算符,这样做的目的是为了节约内存开销和加快计算效率。位运算符,这个位代表这什么位二进制位简称位,是二进制记数系统中表示小于的整数的符号,一般用或表示,是具有相等概率的两种状态中的一种。 在学习源码中,发现有大量使用位运算符,这样做的目的是为了节约内存开销和加快计算效率。 位运算符,这个位代表这什么? 位:二进制位简称位,是二进制记数系统中表示小于2的整数...

    zhaofeihao 评论0 收藏0
  • 你不知道的按运算

    摘要:相信大家都知道二进制数按位运算的规则来看一些简单的例子单纯的二进制位之间的这些运算相当简单,但对我们实际编程并没有直接帮助,因为编程过程中需要的经常是数字间的运算,比如。 先来看LeetCode上的Divide Two Integers题目要求: Divide two integers without using multiplication, division and mod ope...

    luoyibu 评论0 收藏0

发表评论

0条评论

young.li

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<