Java toBinaryString()函数探究及Math.abs(-2147483648)=-2147483648原理探究
toBinaryString()函数
public class Customer {
public static void main(String[] args) {
int m=-8;
System.out.println(Integer.toBinaryString(m));
}
}
结果:11111111111111111111111111111000
由此可知,toBinaryString()是直接输出补码
Math.abs(-2147483648)=-2147483648
首先要明白,计算机取反操作是 补码取反+1(包含符号位),不含符号位的是回复原码
以-8为例
1 2 3 4 5 6 7 8
-8: 补 1111 1111 1111 1111 1111 1111 1111 1000
反 1111 1111 1111 1111 1111 1111 1111 0111(取反,不含符号位)
原 1000 0000 0000 0000 0000 0000 0000 1000(加一)
补反+1 0000 0000 0000 0000 0000 0000 0000 1000(取反+1,包括符号位)
8: 补 0000 0000 0000 0000 0000 0000 0000 1000
-2147483648的补码如下
补:1000 0000 0000 0000 0000 0000 0000 0000
补反:0111 1111 1111 1111 1111 1111 1111 1111
+1: 1000 0000 0000 0000 0000 0000 0000 0000
由此可知:
-2147483648在进行取反操作时,得到的还是-2147483648,
所以出现Math.abs(-2147483648)=-2147483648就见怪不怪了
Java toBinaryString()函数探究及Math.abs(-2147483648)=-2147483648原理探究的更多相关文章
- Math.abs为Integer.Min_VALUE返回错误的值
Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...
- java中Math.abs(-2147483648)的返回值应该是什么?
我觉得这是一个非常有意思的问题,Math.abs(-2147483648)的返回值应该是什么? java计算结果 为什么没有得到正数结果呢? 首先我们先看下java区分整数正负的原理.在二进制的情况下 ...
- Java数学函数Math类
Java数学函数Math类常用: Math.abs(12.3); //12.3 返回这个数的绝对值 Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3) ...
- java数学函数Math类中常用的方法
Math类提供了常用的一些数学函数,如:三角函数.对数.指数等.一个数学公式如果想用代码表示,则可以将其拆分然后套用Math类下的方法即可. Math.abs(12.3); ...
- Java中的Math.abs()
Math.abs(n):对int.long.float.double类型的数取绝对值 其中 int 类型的数取值范围是 -2^31——2^31-1(-2147483648 ~ 2147483647) ...
- java中常用到的math方法(Math.PI、Math.random()、Math.abs(double)、Math.floor(double)、Math.ceil(double)、Math.round(double))
public class MathDemo { public static void main(String args[]){ /** * abs求绝对值 */ System.out.println( ...
- java数学函数库 API(转)
原文地址:http://www.24xuexi.com/w/2011-11-08/98206.html 首先给大家看看Math类所提供的主要方法,下面的列表给出了Math类的主要方法,如果要理解Mat ...
- Java常用类之【Math类、Random类、System类、Runtime类】
一.Math类 Math类 [绝对值]Math.abs();//返回对应类型的绝对值 [最大值和最小值]Math.max(int a, int b) ,Math.min(int a,int b);(其 ...
- Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)
Math类:数学工具类,做一些数学计算,开方,对数,三角函数等 所有方法都是静态方法,不需要建立对象,直接用类名调用即可 示例: 这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即 ...
随机推荐
- python 字节转换成图像
python 字节转换成图像 使用base64 1.图片转成字节使用: base64.b64encode() 2.字节转成图片: base64.b64decode() 图片字节串: iVBORw0K ...
- windows----------windows查看端口是否被占用
假如我们需要确定谁占用了我们的80端口在windows命令行窗口下执行: netstat -aon|findstr "80" TCP 127.0.0.1:80 0.0.0.0:0 ...
- git之摘抄
vn中央集权, 统一服务器, 权限安全管理 git 分布式,代码仓库历史本地有,不受约束, 可以随意开分支.
- POJ 2533 裸的LIS
A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence of the given ...
- spring cloud zuul参数调优
zuul 内置参数 zuul.host.maxTotalConnections 适用于ApacheHttpClient,如果是okhttp无效.每个服务的http客户端连接池最大连接,默认是200. ...
- websocket 二合一
server from flask import Flask, request, render_template from geventwebsocket.handler import WebSock ...
- js中获取当天的时间的年月日
var d=new Date() var day=d.getDate() var month=d.getMonth() + 1 var year=d.getFullYear() document.wr ...
- ps | grep排除grep这个进程
我们经常用ps | grep xxx来查询是否存在某进程,但默认情况下会将grep这个命令也作为结果返回,这样无论是否存在查询的进程,该命令的返回值都是0. 要避免这种情况可以使用grep的-v参数, ...
- Java 泛型方法、泛型类、通配符、通配符上下限
泛型方法 泛型方法定义规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前. 每一个类型参数声明部分包含一个或多个类型参数,参数间用逗号隔开.一个泛型 ...
- 基于token的身份验证JWT
传统身份验证的方法 HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下 ...