首页 > 编程语言 >[Java基础]int的表示范围

[Java基础]int的表示范围

时间:2024-08-20 16:07:24浏览次数:8  
标签:11111111 0000 int 31 补码 负数 00000000 Java 范围

在java基础类型中,int类型占四个字节,而每个字节在内存中占8位(8byte),所以可以使用共4X8=32个位数来存储该类型,也就是四个八位的二进制数,所以有了以下说法

在计算机中,它的二级制表示为四个长度为8的二进制数,00000000 00000000 00000000 00000000,不了解的同学可以补一下原码,反码和补码的概念,计算机中的数字是以补码的形式存储的

正数的原码 补码 是相同的,负数不同,负数反码为除符号位的其它位数取反,补码为反码加一,引入反码 补码是为了表示负数来区别开正数,因为二进制没有正负的区别,要区别就得加个标识,就是符号位,按约定,最高位为符号位

首位加粗的0就是是符号位,根据正负要求固定为0或1,为0则代表正数,为1则代表负数

所以实际可用的位数是31位,若为负数,最小表示时,首位为1,其余位数全部为1,则为111111111 11111111 11111111 11111111,其补码为10000000 00000000 00000000 00000001转换成十进制就是-2147483647,即-2^31 + 1,那么看到这里,大家都应该认为int的范围是 -2^31 + 1 到2^31 -1,也就是-2147483647到2147483647,那为什么负数最小能表示到-2147483648 即-2^31呢?问题就出在0上

0的补码,数0的补码表示是唯一的, 例:[+0]补=[+0]反=[+0]原=00000000,[-0]补=11111111+1=00000000

在二进制中,0有两种表方法。+0的原码为0000 0000 0000 0000 0000 0000 0000 0000,-0的原码为1000 0000 0000 0000 0000 0000 0000 0000,因为0只需要一个,而取正0作为0来区别正数和负数

巧合的是-2147483648的补码表示为1000 0000 0000 0000 0000 0000 0000 0000,与-0的原码是一致的,这样,-0便被利用起来,存储-2147483648。

而正数,最大表示时,首位符号位为0,其余位数为1,则为01111111 11111111 11111111 11111111,即231-1(2147483647),如果不减一,就是231(2147483648),这是你发现2^31二进制补码表示为11111111 11111111 11111111 11111110 ,符号位被占用了而且为1

而符号位为1则代表负数,也就是位数不够用了,若想表示成正数需要多一位表示符号,即 01111111 11111111 11111111 11111110,这样就变成了33位,超出表示范围

所以,java中int类型表示范围是-231到231-1,大概是21亿左右,注意超出这个范围的数据不要用int类型接受,会有精度问题

标签:11111111,0000,int,31,补码,负数,00000000,Java,范围
From: https://www.cnblogs.com/DCFV/p/18369600

相关文章

  • java+vue计算机毕设健身信息管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快,人们对健康生活的追求日益增强,健身已成为许多人日常生活不可或缺的一部分。传统的健身管理方式往往存在效率低下、信息不透明......
  • java+vue计算机毕设紧急救援物资分配系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着自然灾害与突发事件的频发,紧急救援行动的高效性与准确性成为了衡量社会应急管理体系成熟度的重要标志。在这些紧急情况下,救援物资的及时分配直接......
  • java+vue计算机毕设考研论坛网站【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:在当今社会,随着高等教育的普及和就业竞争的日益激烈,考研已成为众多学子提升自我、追求更高学术成就的重要途径。然而,考研信息的繁杂与分散给考生带来......
  • java+vue计算机毕设科研文献管理系统【源码+开题+论文】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着科研活动的日益频繁与深入,科研文献的数量呈爆炸性增长,如何高效地管理、检索和利用这些文献成为科研人员面临的重要挑战。传统的文献管理方式,如纸......
  • java学习路线
    【JAVA简介】Java已经连续多年占据编程语言榜首,其在后台开发中的占有率,地位不可撼动!Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,......
  • Leetcode JAVA刷刷站(55)跳跃游戏
    一、题目概述二、思路方向    在Java中,为了解决这个问题,你可以采用贪心算法的思想。贪心算法在这里的应用主要体现在,每一步都尽可能跳得远,以此来判断是否能够到达数组的最后一个下标。    算法的思路是,遍历数组nums,用一个变量farthest来记录遍历过程中能够......
  • Java发票查验接口让财务告别低效的工作模式
    Java发票查验接口、发票识别接口说明、发票查验状态码说明翔云发票识别与发票查验接口助力企业财务人员拒绝焦虑,告别抵效。仅需一键上传发票图片,翔云发票识别接口便能快速、精准识别全票面信息,发票查验接口实时联网查验发票的真伪,且可实现发票的批量识别与查验,助力财务人......
  • Java身份证实名认证接口解锁认证新速度
    Java身份证实名制接口示例、身份证识别API、实名制翔云身份证实名认证接口就像一把无形的锁,以快速、自动、精准的身份核验优势代替传统繁琐、耗时的传统实名认证流程,通过验证身份证二要素、三要素的方式确保线上平台用户在虚拟世界里每一次操作的真实可靠,防止信息的泄露与盗用,让......
  • JAVA的数据结构
    JAVA数据结构一、数组(Arrays)可以存储固定大小的相同类型的元素。int[]array=newint[5];优点:随机访问元素效率高缺点:大小固定,插入和删除元素相对较慢二、列表(Lists)1、ArrayListList<String>arrayList=newArrayList<>();特点:动态数组,可变大小优点:高效的随机访......
  • JAVA工厂模式
    概要工厂模式提供了一种创建对象的方法,而无需指定要创建的具体类通过使用工厂模式,可以将对象的创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样可以提高代码的可维护性和可扩展性。类型简单工厂模式:简单工厂模式不是一个正式的设计模式,但它是工厂模式的......