int类型数据范围 - 学习_int值对应的机器数_穿素白衫的中少年的博客-程序员宅基地

技术标签: 计算机组成-COMPUTER COMPOSITION  进制-BINARY SYSTEM  int  数据范围  

1.应用场景

主要用在计算机内部储存和传输。

你可能还会问:

学习二进制究竟有什么用呢?

平时的编程中,我们好像并没有使用相关的知识啊?

确实,目前的高级语言可以帮助我们将人类的思维逻辑转换为使用 0 和 1 的机器语言,

我们不用再为此操心了。

但是,二进制作为现代计算机体系的基石,这些基础的概念和操作,你一定要非常了解。

二进制贯穿在很多常用的概念和思想中,例如逻辑判断、二分法、二叉树等等。

逻辑判断中的真假值就是用二进制的 1 和 0 来表示的;

二分法和二叉树都是把要处理的问题一分为二,正好也可以通过二进制的 1 和 0 来表示。

因此,理解了二进制,你就能更加容易地理解很多计算机的数据结构和算法,也为我们后面的学习打下基础。

2.学习/操作

1. 文档

五分钟教会你任何进制之间的互相转换

进制转换:二进制、八进制、十六进制、十进制之间的转换  // 总体思路:先转为十进制,然后再转为目标进制

初学JAVA随记——8bit(1byte)的取值范围是+127到—128 - 吸灰 - 博客园

位(bit)、字节(byte)、字符、编码之间的关系_prdslf001001的博客-程序员宅基地

字节、字、bit、byte的关系_Bobit - 程序员宅基地-程序员宅基地_bit byte

计算机原码,反码,补码_chenchao2017的博客-程序员宅基地_原码反码补码

2. 整理输出

2.1 弄清楚这个事情,首先要知道,二进制与位的概念

二进制

01010101...组成的一段数字,计算机内部[底层]使用的即二进制,包括储存和传输。

补充:

计算机使用二进制和现代计算机系统的硬件实现有关。组成计算机系统的逻辑电路通常只有两个状态,即开关的接通与断开。

二进制的发明者 是 戈特弗里德·威廉·莱布尼茨[德国数理哲学大师] 1679年发明,你说[莱布尼茨]听着有点熟悉,对,就是那个微积分公式,大名鼎鼎的[牛顿-莱布尼茨公式,又名 微积分基本定理]的提出者之一。不过他的命运结局并不好,而且与牛顿不为人知的另一面有关~

位(bit, 比特)

可以简单理解为就是0 1所谓的位置,每个就是位。

如:01010101 就是一个长度为8bit的二进制数字 ,现实中我们常用十进制表示和运算,至于进制之间的换算 ,请另行查阅资料。 

也可参见

五分钟教会你任何进制之间的互相转换  

进制转换:二进制、八进制、十六进制、十进制之间的转换  // 总体思路:先转为十进制,然后再转为目标进制

2.2 核心点

这里以Java为例,其他语言实现也大体是一样的

8bit (1byte)的取值范围是 -128 -- 127
一个byte由八个位组成,如00000000,其中,从右往左数[即从低位到高位],前7位表示数值,第8位是符号位(0为正,1为负)。

这样正负1如下:

+1 : 00000001

-1  : 10000001

最大的正数就是0 1111111,即 2^0+2^1+……+2^6=127,

最小的负数,同理,为1 1111111,即-127。

上述的描述会出现一个问题,就是0,会出现一个 +0 和一个 -0,于是规定-0为-128,这样就与计算机的补码(程序都是按补码运行的) 完美地结合在一起。 --- 到底是如何完美地,请查看计算机的原码,补码,反码

以此类推,int,short,long都可以推出他们的取值范围。

备注:

关于计算机的原码,补码,反码 见 计算机原码,反码,补码

这也是目前计算机系统底层 8 位整型数字的区间范围,所以计算机底层是通过补码来表示数字的,也只能通过补码来表示。

插入

了解到这里,我们再来看为什么 uint 类型的 255 转化为 int8 类型的值后是 -1。-- Golang中

255 是无符号正数,补码和原码都是 255,即 16 个 1 组成的机器数,转化为 int8 类型后,由于 int8 只能存放 8 位机器数,所以会截取 255 后 8 位数字,也就是 1111 1111int8 是有符号数字,第一位是符号位,所以真值是后 7 位,计算机底层通过补码表示数字,需要将其转化为补码,而这个数字又是负数,所以需要将后 7 位按位取反再 +1,也就是 1000 0001,即 -1

后续补充

...

3.问题/补充

TBD

4.参考

五分钟教会你任何进制之间的互相转换_不受天磨非好汉,不遭人妒是庸才——刘水镜-程序员宅基地

进制转换:二进制、八进制、十六进制、十进制之间的转换_《好好先生》专栏-程序员宅基地_8进制转2进制

初学JAVA随记——8bit(1byte)的取值范围是+127到—128 - 吸灰 - 博客园

位(bit)、字节(byte)、字符、编码之间的关系_prdslf001001的博客-程序员宅基地

字节、字、bit、byte的关系_Bobit - 程序员宅基地-程序员宅基地_bit byte

计算机原码,反码,补码_chenchao2017的博客-程序员宅基地_原码反码补码

后续补充

...

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/william_n/article/details/101903486

智能推荐

【干货+源码】树莓派实现车牌识别检测系统_小白学视觉的博客-程序员宅基地

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达本文转自|机器之心怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert ...

[Java反序列化]Javacc链6分析_Y4tacker的博客-程序员宅基地

文章目录写在前面GadgetsJavaCC链6分析利用链参考文章写在前面感觉看完了cc链1以后cc链6就突然变得很简单了(来自P神的简化链,这里我修改了一丢丢),那么就开始学习了Gadgets/* Gadget chain: java.io.ObjectInputStream.readObject() java.util.HashMap.readObject() java.util.HashMap.hash() org.apache.commons.collections.k

java中调用接口时,针对URL中特殊字符的解决方法_接口字段的特殊字符处理_杀神Jack的博客-程序员宅基地

今天在对接第三方接口时,总是出现中文乱码问题。后面才知道,原来是自己的eclipse中设置的编码格式是gbk,但是第三方接口需要传递的参数必须为utf-8才行。

后端系统开发利器之gflags_gflags define declare_张巩武的博客-程序员宅基地

简介gflags是Google的一个开源项目,用于解析程序运行参数。gflags简单易用,它的好处在于统一配置格式,减少开发工作量。在工程实践中,gflags在简化开发和测试方面表现非常出色,它还有一个很棒的功能是支持多人合作开发。gflags在2008年首次推出,至今已有10年时间,目前有很多公司都在用gflags。使用下面的例子简单展示了C++语言中gflags的基本用法。si...

maven中强大的scope标签详解_茁壮成长的凌大大的博客-程序员宅基地

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

聊一聊binder driver导致的系统重启问题_Vincent_Song的博客-程序员宅基地

问题现象这个问题最早是由接电话重启的现象暴露出来的,当时看到异常信息是Native crash,栈如下:Build fingerprint: 'Xiaomi/scorpio/scorpio:6.0.1/MXB48T/6.10.8:user/release-keys'Revision: '0'ABI: 'arm64'pid: 1383, tid: 1400, name: Binder_1 >>>

随便推点

在Linux下修改字符集-支持中文(简单粗暴)_linux 修改为中文字符集_Owen Guo的博客-程序员宅基地

1、打开文件 /etc/locale.conf2、将文件内容修改为3、执行以下命令或者重启系统source /etc/locale.conf 注意:此方法为在ContOS 7下有效由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!...

Java Clone深拷贝与浅拷贝的两种实现方法_java中高级架构师的博客-程序员宅基地

1.首先,你要知道怎么实现克隆:实现Cloneable接口,在bean里面重写clone()方法,权限为public。2.其次,你要大概知道什么是地址传递,什么是值传递。3.最后,你要知道你为什么使用这个clone方法。先看第一条,简单的克隆代码的实现。这个也就是我们在没了解清楚这个Java的clone的时候,会出现的问题。看完代码,我再说明这个时候的问题。先看我要克隆的学生bean的代...

制造恶作剧切断TCP连接和进程之间的关联_dog250的博客-程序员宅基地

想不想再玩个恶作剧??很多运维发现系统中有tcp连接异常的时候,会使用netstat/ss命令找出tcp连接对应的处理进程,然后去找研发debug这个进程。比如:[[email protected] ~]# netstat -ntpActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program namet

java jackson 生成_关于jackson:从java类生成JSON模式_weixin_39554170的博客-程序员宅基地

我有一个波卓班public class Stock{int id;String name;Date date;}是否有可以将pojo转换为json模式的注释或开发框架/api,如下所示{"id":{"type" :"int"},"name":{"type" :"string"}"date":{"type" :"Date"}}号此外,我还可以通过在POJO上指定一些注释或配置来扩展模式以添加诸如"R...

glTF基本结构_gltf数据结构_爱情不过赛尼奥尔的博客-程序员宅基地

glTF介绍一、概述glTF的全称是GL传输格式,是一种针对GL(WebGL,OpenGL ES以及OpenGL)接口的运行时资产(asset)。在3D内容的传输和加载中,glTF通过提供一种高效,易扩展,可协作的格式,填补了3D建模工具和现代GL应用之间的空白。glTF资产包含零个或多个场景,scene.nodes数组中所有的节点都必须是根节点。节点层次结构使用children属性来定义,如"childredn":[1,2,3,4]节点通过matrix属性和rotation、sc

QT实现猜数字游戏_qt猜数游戏_从心开始 >的博客-程序员宅基地

QLable显示图片、动图;常用控件的使用;信号与槽复习;在QTextEdit显示不同颜色字体、并且能够实现回车换行效果;使用QStackedWidget实现四个页面切换;定时器的使用等

推荐文章

热门文章

相关标签