java int越界_用位运算判断int类型变量越界
今天在做一道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类型变量越界相关推荐
- java 字符串 移位_使用位运算、值交换等方式反转java字符串-共四种方法
在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法. StringBuilder(str).reverse() char[]循环与值交换 byte循环与值交换 apa ...
- 【Java】位运算判断2的N次幂
思考 如何判断一个数是不是2的N次幂? 难道要一直除下去?一直乘过去?还是打表? 我们就不能简单一些处理这个问题吗? 那就有了这篇博客的内容--位运算判断一个数是不是2的N次幂-- 核心算法 其实就是 ...
- 位运算判断奇偶数_位运算判断奇偶数
第一条:利用位运算判断一个整数是奇数还是偶数. 经常用到一个for循环,当索引i是奇数时执行语句A,偶数时执行语句B.判断i是奇数还是偶数,可用如下方法: if(i &1){ //i是奇数情况 ...
- 用一句位运算判断两个整数的大小并返回较大者
2019独角兽企业重金招聘Python工程师标准>>> 用一句位运算判断两个整数的大小并返回较大者,不用if..else,不用循环,不用switch,不用条件运算符 const in ...
- 位运算判断奇偶-C语言
//位运算判断奇偶 #include <stdio.h> int main() {int a;printf("输入一个整数:\n");scanf("%d&qu ...
- java加减乘除运算代码_从“位运算”炫技到“操作符”,再到逐步理解“群论”...
由位运算到操作符,再到逐步理解群论 Step by Step for Understanding from Bitwise to Operators, then Group Theory 是否曾经会有 ...
- 位运算判断奇偶数_基础拾遗:除了amp;和amp;amp;的区别,你还要知道位运算的这5个运算符...
01 前言 那年刚找工作那会,就碰到过这么一个简单的题目1.都是作为逻辑与的运算符.2.&&具有短路功能,计算出前者false,就不需计算后者的true or false.后来在微信群 ...
- java取余位运算_使用位运算取余
取余运算符为"%".但在以前,CPU采用如下方法计算余数(注意,该方法只对2的N次方数系有效): X & (2^N - 1) 举个例子: 9 % 4 //因为4是2^2:所 ...
- [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]
[问题描述][中等] [解答思路] 1. 暴力 逐位与 ,只需要判断i= 0 或 i == 2147483647 的话,就跳出 for 循环即可. 时间复杂度:O(N) 空间复杂度:O(1) publ ...
最新文章
- 【收藏】万字综述,核心开发者全面解读PyTorch内部机制
- 二叉树 | 根据前序中序遍历重建二叉树
- hello world 简单内核模块
- 75 Zabbix中文乱码问题
- 通过MapReduce统计每个单子在每个文件中出现的次数(FileSplit的使用),单词作为key,所在文本和次数作为value进行统计
- Entity Framework 6.3 和 EF Core 3.0 路线图
- emctl start dbconsole OC4J_dbconsole*** not found
- 数据科学 IPython 笔记本 8.11 多个子图
- oracle-Mount
- JQuery选择和设置表单值
- SoapUI使用以及常见错误解决
- 测试音频文件比特率软件,音频比特率多少合适你真的知道吗
- jpa findOne()用法
- NVMe1.4 Admin Command学习(1)-- format identify
- 什么是日活,什么是月活,统计了有什么意义?
- (DES)Single-Shot Object Detection with Enriched Semantics
- matlab语法介绍——fft()、ifft()、fftshift()
- 分光器尺寸及光损耗计算
- 【转载】抽象语法树简介(有图)
- LifeCycle 的使用和原理