理解Java的数字溢出

Java各个数字类型所占的存储空间:

整型

  • byte:1字节,1*8bit,取值范围-128~127
  • short:2字节,2*8bit,取值范围-32768~32767
  • int:4字节,4*8bit,取值范围-2147483648~2147483647
  • long:8字节,8*8bit,取值访问-2^64~2^64-1

浮点型

  • float:4字节,4*8bit
  • double:8字节,8*8bit

char类型

java里,char也是数字类型,可以与其他数字类型转换

  • char:2字节,2*8bit

数值溢出

当存储一个超出类型的取值范围的数值,这样就会导致数字溢出。溢出的数值会被截去高位数值,保留类型所能存储的位数。

byte b = (byte)400; // -112

400表示为二进制

0000 0001 1001 0000

byte只能存储8位,截去高位数值得到:

1001 0000

在此8位数字里,(10010000 - 1)取反得到112,所以结果为-112

版权声明:著作权归作者所有。

相关推荐

bash shell把每行行首的数字移动到行末

可以使用sed和GNU的gawk来实现。示例:123adfdfdsf 234dferere 345rererer 移动后结果为:adfdfdsf123 dferere234 rererer345 sed方法:sed -E 's/^([0-9]+)(.*)/\2\1/' source.txt > target.txt gawk方法:gawk&n

纯JavaScript检测页面是否加载完成(理解JavaScript页面加载事件)

JavaScript与页面加载相关的事件先介绍JavaScript与页面加载相关的几个事件:document.readystatechangereadystatechage事件会监控document.readyState。readyState有三个值:loading:文档正在加载interactive:文档已加载完成且已被解析,但子资源(如image,css,iframe等)仍在加载。comple

Java使用DecimalFormat将数字四舍五入到后几位

Java的DecimalFormat类可以对数字做格式化,如设置小数后指定位数。基本用法DecimalFormat df = new DecimalFormat("#.#####"); df.format(0.912356); 取后五位,默认不对数字的最后一位做四舍五入,返回结果为0.91235 对数字最后一位做四舍五入如果要对数字最后一

理解JavaScript普通函数以及箭头函数里使用的this

this普通函数的this普通函数的this是由动态作用域决定,它总指向于它的直接调用者。具体可以分为以下四项:this总是指向它的直接调用者, 例如 obj.func() ,那么func()里的this指的是obj。在默认情况(非严格模式,未使用 'use strict'),如果函数没有直接调用者,this为window在严格模式下,如果函数没有

TypeScript:字符串转换为数字

在TypeScript,String转换为Number有以下方式:Number构造函数(推荐)let n = Number('1234') // 1234 let nan = Number('abcd') // NaN +号操作符let n = +'1234' 

理解Java 9的open module(公开模块)

模块化是Java 9新增的一个很重要且影响代码结构的特性。分类根据外部代码在编译时和运行时对模块的访问权限不同分为:常规模块(normal module)和公开模块(open module)。编译时访问比较容易理解,即代码能否显式直接使用模块里的类型,没有权限访问,编译时报错。在运行时访问模块代码是指使用Java里的Core Reflection