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

智能推荐

密码学基础(对称加密和非对称加密)_凯撒加密是对称加密吗_长理小生的博客-程序员宅基地

密码学基础分类对称加密非对称加密两类加密的特点结合使用举例凯撒密码代码实现-加密代码实现-解密main函数及文件加密分类一般分为:对称加密非对称加密对称加密加密和解密使用的是同一个密钥或者,两者可以互相推导得出,则认为是对称加密,如DES,AES,3DES在传输数据时用密钥将数据加密,然后将密文发给接收方,接收方再使用该密钥解密数据。这样就要求接收方需要知道密钥,如果接收方需要接受1万个用户的数据的话就需要知道1万个密钥,并且密钥容易泄漏。非对称加密加密和解密的密钥不同,且知道其中

Java基础加强--自动装箱、享元模式、枚举_and-android的博客-程序员宅基地

------- android培训、java培训、期待与您交流! ----------*for增强循环格式:for(type 变量名:集合变量名){...}注意事项:     1>迭代变量必须在()中定义     2>集合中的变量可以是数组或实现了iterable接口的集合类JDK1.5的新特性:可变参数public class Demo {public clas

vlc android 代码编译后无法启动_为毛呀的博客-程序员宅基地

编译完成后,无法启动vlc把    const char *argv[] = {        "-I", "dummy",        "--no-osd",        "--no-video-title-show",        "--no-stats",        "--no-plugins-cache",        "--no-drop-la

CSS容器按比例缩放_css 比例缩小_绵羊万的博客-程序员宅基地

常见的容器的宽高比例是16:9或者是4:3,比如说一张图片,我们只设置宽和高中的任意一个值,另外一个值就会根据原来图片的比例自动进行缩放,使得调整后的图片仍然保持与原图片相同的比例。上面的方式都是在知道宽或者高的情况下,如果宽和高都不知道的情况下,如何保证容器按比例缩放呢?方法如下所示:.container{ height: 0; padding-bottom: 56...

JNI入门教程之HelloWorld篇_hellbaby666的博客-程序员宅基地

资料引用:http://www.knowsky.com/363050.html本文讲述如何使用JNI技术实现HelloWorld,目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。JavaNativeInterface(JNI)是Java语言的本地编程接口,是J2SDK的一部分。在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种...

python五子棋双人对弈_PyQt5实现五子棋游戏(人机对弈)_weixin_39980184的博客-程序员宅基地

这篇博客主要是为了学习Python和PyQt,因为对棋类游戏比较热衷,所以从规则较简单的五子棋入手,利用PyQt5实现图形界面,做一个可以进行人机对弈的脚本,最后打包成应用程序。AI的算法打算用神经网络来完成,正在苦学TensorFlow中。本来我以为五子棋规则很简单,不就像小学时候玩的那样,五个棋子连在一起就赢了嘛,但是后来发现事情并没有那么简单,现在的五子棋有禁手这个规则 ,“三三禁手” 、“...

随便推点

关于注解@Controller和@RestController返回页面_返回页面自动触发注解_红桃∩的博客-程序员宅基地

默认情况下,@Controller返回页面,@RestController返回数据。但是在有些情况下需要在被@RestController的注解时返回页面的,我们就需要用到视图ModelAndView:@RequestMapping(value="/tologin", method=RequestMethod.GET) public ModelAndView login(){ ...

Caffe安装笔记一:VMWare11+Ubuntu14.04搭建Linux安装环境_DonatelloBZero的博客-程序员宅基地

这一篇先介绍caffe运行环境的搭建,新手,稍微花了点时间,同时也是win8兼容性差的问题。  首先,简单说说虚拟机的选择。虚拟机尽量选择vmware workstation,不要用player,因为快照功能实在是十分必须的。win8和vm12兼容性很差,所以台式机上装的是wmware11。笔记本是win7,装的vm12,不过在安装虚拟机的时候记得要把类型选择为兼容wmware11的类型,这样

Laya 微信小游戏登录问题_IM魂影的博客-程序员宅基地

微信官方通知:小程序与小游戏获取用户信息接口调整,请开发者注意升级。为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息:一、小程序:1、使用 butto...

MATLAB中QUARC怎么设置,WATERTANK 通过matlab实现水 位控制系统,采用PID 方法达到水 263万源代码下载- www.pudn.com..._冰鬼的博客-程序员宅基地

文件名称: WATERTANK下载 收藏√ [5 4 3 2 1]开发工具: matlab文件大小: 295 KB上传时间: 2016-08-17下载次数: 0提 供 者: mjh详细说明:通过matlab实现水箱水位控制系统,采用PID控制方法达到水位控制-water tank control system文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):ELEC...

WinEdt初次接触_winedt编译按钮在哪里_「已注销」的博客-程序员宅基地

WinEdt被应用于诸如TeX、HTML或NSIS等编译器和排版系统的前端软件。WinEdt的突出方案,使其可以设置为不同的模式,其拼写检查功能支持多种语言设置。在其官方网站,可下载到多种语言的词典(word-lists)。虽然说WinEdt是一种兼用型文本编辑器,它却被专门设计及配置以与TeX系统(如MiKTeX或TeX Live)无缝整合。WinEdt软件并不深度上包括与TeX相关的主题。但是LaTeX/TeX的介绍和手册,以及所连接到的其他推荐配件,都可以在TeX的公共站点下载到。

mysql触发器 触发脚本_mysql触发器内执行shell脚本,shell脚本用curl访问php网页_诗遥一妈的博客-程序员宅基地

如果不想自己编译的话,把lib_mysqludf_sys.so文件放到 mysql的lib/mysql/plugin/目录下。执行chcon -t texrel_shlib_t usr/lib/mysql/plugin/lib_mysqludf_sys.so在mysql中执行如下sql创建函数DROP FUNCTION IF EXISTS lib_mysqludf_sys_info;DROP FU...

推荐文章

热门文章

相关标签