今天在做一道oj题的时候,遇到了一个情景,需要判断经过操作后的int类型数是否越界。我直接很暴力地比较和int类型的最大最小值来判断是否越界。但还想思考一下用位运算判断是否越界的方法,顺便巩固一下位运算和补码的知识。

//resault是long类型变量,语言是java

if(resault>Integer.MAX_VALUE||resault

System.out.println("发生溢出");

}

情景描述:

现用一个long类型变量存储一个整形数,要求判断将其强转成int类型是否会发生溢出。

问题分析:

int整形占4个字节,long整形占8个字节,若无溢出现象发生,正数的前32位均是0,负数的前32位均是1.所以即判断该变量前32位是否全0或全1,若是则无溢出现象。

且运算:

若前32位不是全1,全0,则可以判断其发生了溢出。或运算与且大同小异。

if ( (resault&0xFFFFFFFF00000000L )!= 0xFFFFFFFF00000000L &&

(resault&0xFFFFFFFF00000000L)!=0 ) {

System.out.println("发生溢出");

}

注意运算优先级

移位运算:

左移的本质是乘法,右移的本质是除法,除以2^n,对正数来说,除不尽舍去。对负数来说,除不尽商-1,因此正数能右移得到0,而负数无论怎么右移最大也只能得到-1,无法为0,成为1111……的形式。

if ( (resault>>32) != 0 && (resault>>32) != -1) {

System.out.println("发生溢出");

}

java int越界_用位运算判断int类型变量越界相关推荐

  1. java 字符串 移位_使用位运算、值交换等方式反转java字符串-共四种方法

    在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法. StringBuilder(str).reverse() char[]循环与值交换 byte循环与值交换 apa ...

  2. 【Java】位运算判断2的N次幂

    思考 如何判断一个数是不是2的N次幂? 难道要一直除下去?一直乘过去?还是打表? 我们就不能简单一些处理这个问题吗? 那就有了这篇博客的内容--位运算判断一个数是不是2的N次幂-- 核心算法 其实就是 ...

  3. 位运算判断奇偶数_位运算判断奇偶数

    第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...

  4. 用一句位运算判断两个整数的大小并返回较大者

    2019独角兽企业重金招聘Python工程师标准>>> 用一句位运算判断两个整数的大小并返回较大者,不用if..else,不用循环,不用switch,不用条件运算符 const in ...

  5. 位运算判断奇偶-C语言

    //位运算判断奇偶 #include <stdio.h> int main() {int a;printf("输入一个整数:\n");scanf("%d&qu ...

  6. java加减乘除运算代码_从“位运算”炫技到“操作符”,再到逐步理解“群论”...

    由位运算到操作符,再到逐步理解群论 Step by Step for Understanding from Bitwise to Operators, then Group Theory 是否曾经会有 ...

  7. 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...

    01 前言 那年刚找工作那会,就碰到过这么一个简单的题目1.都是作为逻辑与的运算符.2.&&具有短路功能,计算出前者false,就不需计算后者的true or false.后来在微信群 ...

  8. java取余位运算_使用位运算取余

    取余运算符为"%".但在以前,CPU采用如下方法计算余数(注意,该方法只对2的N次方数系有效): X & (2^N - 1) 举个例子: 9 % 4 //因为4是2^2:所 ...

  9. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]

    [问题描述][中等] [解答思路] 1. 暴力 逐位与 ,只需要判断i= 0 或 i == 2147483647 的话,就跳出 for 循环即可. 时间复杂度:O(N) 空间复杂度:O(1) publ ...

最新文章

  1. 【收藏】万字综述,核心开发者全面解读PyTorch内部机制
  2. 二叉树 | 根据前序中序遍历重建二叉树
  3. hello world 简单内核模块
  4. 75 Zabbix中文乱码问题
  5. 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计
  6. Entity Framework 6.3 和 EF Core 3.0 路线图
  7. emctl start dbconsole OC4J_dbconsole*** not found
  8. 数据科学 IPython 笔记本 8.11 多个子图
  9. oracle-Mount
  10. JQuery选择和设置表单值
  11. SoapUI使用以及常见错误解决
  12. 测试音频文件比特率软件,音频比特率多少合适你真的知道吗
  13. jpa findOne()用法
  14. NVMe1.4 Admin Command学习(1)-- format identify
  15. 什么是日活,什么是月活,统计了有什么意义?
  16. (DES)Single-Shot Object Detection with Enriched Semantics
  17. matlab语法介绍——fft()、ifft()、fftshift()
  18. 分光器尺寸及光损耗计算
  19. 【转载】抽象语法树简介(有图)
  20. LifeCycle 的使用和原理

热门文章

  1. ml--分类与预测算法评价方法
  2. LintCode-56.两数之和
  3. 网站下载器WebZip、Httrack及AWWWB.COM网站克隆器
  4. UNP Chapter 11 - 高级名字与地址转换
  5. CentOS 6.5升级Python后yum不可用的解决方案
  6. 如何解决“HttpException (0x80004005): 超过了最大请求长度”问题
  7. Eclipse运行时无法加载主类的解决方法
  8. 如何在Bash中比较字符串
  9. 推荐一个当前互联网很火的技术
  10. java多线程之API初探(一)