java 整数存储为2进制补码形式

今天早上看java的源代码,发现:

用计算器转成十进制后是下面这个值:

然后我就纳闷了,Integer的最小值,不可能怎么大吧?

于是果断写代码验证:

谜底揭开:

0x80000000 是Integer的最小值,不过存储的是补码的形式,这个特殊的值,按照运算规则算下来,其原码也是这个值。

补码转原码规则如下:

正数:原码=反码=补码

负数:原码=补码取反(符号位以为的数字) + 末位1

原码转补码:

正数:补码=原码=反码

负数:补码=原码取反(符号位以外的数字) + 末位1

总结:夯实基础知识

时间: 2024-08-28 12:57:52

java 整数存储为2进制补码形式的相关文章

java中整数类型的2进制表示

java中的4种整数类型:byte,short,int,long均采用补码表示. 如下图右边所示 在java中对二进制数没有"字面"表示方法.十六进制可以用OX或者Ox指示,八进制可以用O指示. 下面的代码可以输出byte类型的数据的2进制表示形式: public class Test { public static void main(String[] args) { byte a = -128; test(a); } public static void test(byte m){

Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可

Java中byte与16进制字符串的互相转换(转)

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L).即byte用十六进制表示只占2位. 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上. 根据以上原理,我们就可

最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类

前言:用于处理Java基本数据的转换及进制转换操作工具 一.实现功能 1.int预byte互转 2.int与byte[]互转 3.short与byte互转 4.short与byte[]互转 5.16位short与byte[]互转 6.long预byte[]互转 7.byte[]与inputstream互转 8.byte与String互转 9.16进制字符转int 10.十进制转2进制 11.byte[]转16进制字符 12.byte[]数组指定位置抽取byte[] 二.代码实现 package

C语言基础:将整数格式化成其它进制输出的代码

如下的资料是关于C语言基础:将整数格式化成其它进制输出的代码. #include <stdio.h> int main () { int value = 255; printf("The decimal value %d in octal is %on", value, value); printf("The decimal value %d in hexadecimal is %xn", value, value); printf("The

URL参数中汉字转换为16进制Unicode形式

导入JAR包: import java.net.*; 把汉字转换为16进制Unicode形式: String xw="新闻中心"; String name=URLEncoder.encode(xw,"utf-8"); 把16进制Unicode形式字符串转换为汉字: URLDecoder.decode("%E6%96%B0%E9%97%BB%E4%B8%AD%E5%BF%83","utf-8"); 注意:从A(UTF-8)页面中

利用java中的BigInteger实现进制转换

[原创] java中的进制BigInteger十分的强大,而且好用,他可以表示任意大的整数,同时还可以进行进制转换,十分的方便, 代码示例: 1 package com.jiajia.demo_1; 2 import java.math.BigInteger;//导入该包 3 public class Demo { 4 public static void main(String[] args) { 5 String str = new BigInteger("15", 10).toS

Java字节数组和16进制字符串的互相转化

背景基础知识: 1.字符编码的相关知识(转自http://blog.csdn.net/llwan/article/details/7567906) 1.1. "字符"是由数字来表示的 先来重新了解一下计算机是如何处理"字符"的,这个原理是大家必须记住的,特别是在用JAVA写程序的时候,万万不可模糊.我们知道,计算机把任何东西都用数字来表示,"字符"也不例外.比如我们要显示一个阿拉伯数字"3",在我们的PC里,其实并不是仅仅用一

java程序练习:x进制转Y进制

/*X进制到Y进制转换*/ /*Step1.提示用户输入数据的进制X *Step2.接收用户输入的数据,保存到X * Scanner方法 *Step3.接收用户输入X进制的数据,保存到num *Step4.提示用户输入输出数据的进制Y *Step5.接收用户输入的数据,保存到Y * Scanner方法 *Step6.十进制=每一位上的(系数*X^权次幂)相加,保存到a * X进制转换十进制 *Step7.Y进制=a/Y,取余数,直到商为零,余数反转,保存到b * 十进制转换Y进制 *Step8.