引言

大家都知道占2个字节的int类型,取值范围是-128~127;那么这个-128究竟是怎么来的呢?

正文

java语言中的byte类型为例,byte占用1个字节byte,共8个bit;也就是8个0或者1来表示正数;在计算机系统中规定第一位表示正负;所以有如下现象:

0000 0000 ~ 0111 1111 表示正数(十进制:+0到+127)
1000 0000 ~ 1111 1111 表示负数(十进制:-0到-127)

由于计算机采取二进制补码来表示负数,所以有
(原码取反+1得到补码(注意:取反不包括符号位))
1000 0000 的补码为 0000 0000 ;
而+0用原码表示也是 0000 0000;
也就是说,+0和-0在二进制系统中存储的编码时一样的

因为我们知道,8位二进制可以表示28个编码,但是当用补码表示负值时,这8个bit就只能表示28-1个编码了(换句话说有一个编码:1000 0000,他的补码和另外一个编码重复了。。。)

由于任何一个原码转变为补码时都不会变成1000 0000;
所以,人为规定1000 0000这个补码编码对应的十进制数**-128**

综上,补码系统中,javaint类型表示的取值范围为:-128~127

(为了找这个人为,肝掉两小时)

上述内容如有不妥,看官一定私信或评论指正啊!

参考文章:
https://www.cnblogs.com/hxh88/p/9284049.html
https://blog.csdn.net/linux12121/article/details/51236654
https://blog.csdn.net/cyhleo/article/details/6849704

相关背景知识

  1. 负数在计算机中是以补码表示的
  2. 补码就是:原码取反+1;
  3. 反码:就是0变1;1变0;
  4. 模:指一个计量系统的计数范围;例如时钟的模是12,超过12就会溢出;12这个值也在计量器上显示不出来,计量器只能显示模的余数(0,1,2,3。。。。11)
  5. 计算机减法系统比较复杂,而加法器比较容易实现,所以如果可以用加法替代减法的话,然后使用同一种电路就可以实现整数的加减法运算了。
  6. 例如在4位计算机中,模是16;5-3=2的结果和5+16-3=16+2=2的结果一样;把二进制负数用补码表示也是为了算减法时直接+这个负数就可以了

疑问:人为规定是如何实现的 ?

整型int数据的取值范围是怎么来的?相关推荐

  1. scala整型的类型及取值范围

  2. 整型数据类型java_Java 六种基本整型数据类型变量的取值范围

    原创. *Java四种基本整型数据类型变量(长型long.整型int.短型short.和字节型byte),需要不同的存储空间(分别为8.4.2.1字节),表示不同的数据取值范围.(符号^表示幂指数) ...

  3. 【C#】转换为整型(int)及int取整

    目录 一.转换为整型(int) 1.int.Parse() 方法和int.TryParse() 2.Convert.ToInt32() 方法 3.强制转换(int) 二.三种int取整方法 一.转换为 ...

  4. 有符号整型的数据范围为什么负数比正数多一个?

    背景 我们先看Leetcode的这道题目: 标题:50. Pow(x, n) 难度:中等 https://leetcode-cn.com/problems/powx-n/ 实现 pow(x, n) , ...

  5. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习

    C语言基本数据类型:整型(int)用法详解 1. 整型 int C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int 是整型之一,一般被称为整型.以后, ...

  6. c语言中整形变量,C语言基本数据类型:整型(int)用法详解

    1.整型int C语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负.int是整型之一,一般被称为整型.以后,在不产生歧义的情况下,我们把整数类型和int都称为整 ...

  7. 1.2 String字符串和整型int的相互转换,valueOf() 、parse()和toString()

    String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.前面部分主要讲解了 String 转换 int 和 int 转换 String 方法,后面部分对 va ...

  8. Java String字符串和整型int的相互转换

    String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的. String转换为int String 字符串转整型 int 有以下两种方式: Integer.pa ...

  9. Java教程:Java String字符串和整型int的相互转换

    Java教程String 在编程中被广泛使用,所以掌握 String 和 int 的相互转换方法是极其重要的.本节前面部分主要讲解了 String 转换 int 和 int 转换 String 方法, ...

最新文章

  1. 学习成长就到鸿蒙思维,庆国庆,迎中秋,鸿蒙教育享双节99元开启思维之旅!!...
  2. 了解EOS看这一篇就够了一、团队二、技术三、项目进度四、争议和风险五、展望
  3. Python JS Jquery Json 转换关系
  4. SSH框架整合的流程
  5. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...
  6. c# ini file
  7. CAS(比较并交换)学习CAS实现原子性+volatile实现可见性,cas与synchronized比较的优缺点
  8. 漫步凸分析二——凸集和锥
  9. 解决办法:syslinux:Accessing physical drive
  10. Java期末考试知识点复习
  11. VMware虚拟终端的下载及安装
  12. 软件单元测试数据分析模板,单元测试报告模板
  13. 数图互通高校房产管理模块周转房管理是怎样管理如合同、续租、到期提醒
  14. 孙正义从阿里巴巴董事会辞职,原因是什么?
  15. mySql 脏读,幻读,不可重复度与事务隔离级别
  16. 应用计算机解数学模型之我见,初中数学建模教学之我见
  17. openstack-t swift搭建(完美搭建)2021
  18. 梁昌勇 软件工程_合肥工业大学管理学院_梁昌勇
  19. mac系统下怎么使用git
  20. QXYSeries、QLineSeries、QSplineSeries、QScatterSeries

热门文章

  1. XSS-lab通关记录
  2. 三维投影总结:数学原理、投影几何、OpenGL教程、我的方法
  3. c语言常用算法pdf,妙趣横生的算法(C语言实现 第2版) 带目录完整pdf[94MB]
  4. 产品运营常踩的七大坑,你踩过吗?
  5. 关于默认网关不可用,DNS服务器未响应问题
  6. 一封台积电离职工程师的信
  7. 客户要求降价,我如何通过涨价拿下订单
  8. SpringCloud Alibaba 从入门到精通(精选)
  9. 织梦DEDE搬家数据还原后,前台错位
  10. 张粤磊:从杂牌野战军到王牌正规军的蜕变