数值分为整型和浮点型两大块。不管是哪种类型,在计算机中都是按二进制形式存储,只有01 两种符号。基本数据类型byteshortintlongfloatdouble 。常量有整型、浮点型和字符串。整型常量不加后缀符号代表int 类型,浮点型常量不加后缀符号表示double 类型。

整型的保存形式

一个32位整数存储形式如下:

++++++++++++++++++++++++++++++++++++++++++++++++

+ 1 0 1 1 0 0 0 1 ++ 0 1 0 0 1 1 1 1 ++ 1 0 1 1 0 0 0 1 ++ 0 1 0 0 1 1 1 1 +

++++++++++++++++++++++++++++++++++++++++++++++++

在存储有符号整型int 时,将最高位的二进制数作为符号位,0 代表整数,1 代表复数。剩余可表示数值的位数只剩下31位。有符号整型在保存形式上与人类有点普通,下面做了一个尝试:

int 

人为去计算1288457420的二进制表示形式,是01001100110011000100110011001100;而 -1288457420的二进制表示形式,猜测是11001100110011000100110011001100。但是实际的结果是:

//

有这样三个名词:原码反码补码。正数原码等于补码,负数补码等于原码不带符号位取反再加一。

补码这个词在我印象中一直有个误区:“在负数参与运算时,才会进行原码转换补码的转换操作从而实现加法操作”。但是其实并不是。补码是数值在计算机中的保存形式,在计算机中数值一直就是补码形式,比如上面定义的负数i 。原码这个词,在计算机中并不存在,只是人类在计算补码形式所创建的一个临时的形式,计算机并不认识它。下面再做另一个测试:

int 

以“我们所认为的原码形式”的二进制常量去定义一个整型i ,输出二进制形式和十进制形式,于是我们按原码转十进制的方法计算得到了二进制数 -1288457420。但是实际的结果:

11001100110011000100110011001100

可以发现保存的十进制数和我们预想的不太一样,它直接将“我们所认为的原码形式”理解为补码形式。这再一次证明了,计算机中并不存在所谓的原码,二进制形式一律是补码形式,本例中,0b11001100110011000100110011001100也被计算机理解为补码形式,于是我们将补码取反加一求得原码,即可得到实际的十进制结果 -859026228

整型间的类型转换

byteshortintlong 的顺序,类型所表示的范围是递增的。从低到高允许自动转换。

byte 

不同类型的变量从高向低进行转换必须使用强制转换。

long 

从高到低转换会丢失精度,计算机会截断高位的全部数据,毕竟越低的类型能表示的范围就越小。从long向int转换,高32位的01111111111111111111111111111111全部被舍弃,只剩低32位的11111111111111111111111111111111,最高位的1 被作为符号位。由于计算机中二进制的表示形式为补码形式,转换为原码形式就是-1 。继续往更低的类型也是一样的道理。

整型常量向非整型变量进行类型转换,在常量值不超过该变量能表示的范围的情况下可以自动转换,否则必须加强制转换。比如int向short转换,int向byte转换:

short 

但非整型常量就没有这样的待遇:

int 

编译器在进行运算时只有两种精度可选32位和64位。小于等于32位的类型运算时都会得到32位整型的结果,然后再判断其值是否超过该类型能表示的最大范围,超过则可以自动转换,不会编译错误,否则必须添加强制转换;如果使用变量运算,编译器无法确定运算结果,必须添加强制转换。以下以byte类型为例:

byte 

小于32位精度的short类型也是一样的道理。赋值运算符不必加上强制转换,赋值运算符的右侧在编译时会自动添加强制转换符号。

byte 

浮点型的表示形式

后面再了解

oracle long类型转换成字符串_数值类型在计算机中的保存形式以及类型转换的思考和尝试...相关推荐

  1. python转化成字符串_如何利用Python将其他数据类型转换成字符串类型

    Python设计语言中有一类常用的数据类型:字符串数据类型.字符串数据类型定义的变量可以使用双引号或单引号将字符括起来,除了字符串数据类型,还有其他的数据类型,如整型.布尔型.列表.字典.元组.可以将 ...

  2. linux中数字转换成字符,各种数字类型转换成字符串型

    各种数字类型转换成字符串型--JAVA 各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数字类型. 字符串型转换成 ...

  3. Java中怎么将Long类型转换成Integer或int类型

    Java中怎么将Long类型转换成Integer或int类型?    强转.Long a=10l; int b = (int)a; 不过如果long值超出int的取值范围后再转型的话会有问题的.就是转 ...

  4. int类型在计算机中的储存(原码、补码、反码)

    int类型在计算机中的储存 说起,int类型在计算机中的储存,首先要解释的就是原码.补码.反码这三个概念了.因为计算机内部储存的都是补码. 原码 对于int类型来说,这里我们按照常见的四个字节讲解,四 ...

  5. 计算机正在执行的指令在,在计算机中,保存当前正在执行的指令的寄存器为(1),存放当前指令地址的寄存器叫(2)。在顺序执行指令_快考试...

    (单选题) 在计算机中,保存当前正在执行的指令的寄存器为(1),存放当前指令地址的寄存器叫(2).在顺序执行指令的情况下(存储器按字节编址,指令字长32位),每执行一条指令,使程序计数器自动加(3). ...

  6. 数字类型转换成字符串类型并逆序输出

    比如将a = 123456转换成字符串类型,并逆序输出为char b = 654321 具体实现如下: #include <stdio.h> #include <conio.h> ...

  7. 属性拼接转换成字符串_使用一些可选的将字符串配置属性转换为其他类型

    属性拼接转换成字符串 有一天,您遇到一些代码,并认为这很漂亮,为什么我没有想到呢? 因此,我的长期同事Mark Warner在使用方法引用处理从String进行转换的标准名称/值存储模式方面有一个不错 ...

  8. ID精度损失处理-Long类型转换成JSON的String类型

    问题: 数据库中id字段设置的是bigint类型 则在实体类中设置成对应的Long类型 private Long id;//主键 后台发送给前台id数据时,前台使用number类型变量接收,numbe ...

  9. 字符内存转成字符串_字符串内存内部

    字符内存转成字符串 本文基于我对StackOverflow的回答 . 我正在尝试解释String类如何存储文本,内部存储和常量池如何工作. 这里要理解的要点是String Java对象与其内容– pr ...

最新文章

  1. 百度大脑发挥AI“头雁效应” 王海峰:在AI时代共同推动社会智能化升级
  2. kafka详解 转载
  3. 用WebCollector爬取新浪微博数据
  4. Spark _10_补充部分算子【三】
  5. CDS view里case - when - else关键字的用法
  6. JAVA实验报告九异常处理_Java课后练习9(异常处理)
  7. hdu 1536(博弈)
  8. 《动手学深度学习 PyTorch版》学习笔记(一):数据操作
  9. 使用php自动将文章标题或内容进行分词,添加和删除标签功能实例!
  10. 用java实现etcd分布式锁_etcd分布式锁及事务
  11. 线性代数:矩阵乘向量-学习笔记
  12. 计算机工程与应用3天外审,200629计算机工程与应用.pdf
  13. 【计算机网络】关于IP数据报 首部检验和的反码问题(二进制反码)
  14. SQL Server常用数据类型
  15. python pil_Python PIL composite()用法及代码示例
  16. java学习第七周总结
  17. jieba.lcut()
  18. 换地方上网后Kali Linux 网络设置
  19. solr(二)Using SolrJ
  20. 电脑无法识别启动盘 不显示启动盘 wintogo WTG 移动硬盘盒+m.2等等

热门文章

  1. Difference between RawValue and FormattedValue
  2. ABAP formula
  3. SAP UI5日期字段关于时区GMT的处理
  4. ABAP Netweaver和git的快捷方式
  5. java并发排序_Java并发(三):重排序
  6. java 输入流关闭顺序_JAVA的节点流和处理流以及流的关闭顺序
  7. css animation动画完成后隐藏_css3动画简介以及动画库animate.css的使用
  8. python学习-高阶函数(函数传参、返回函数(闭包)、匿名函数lambda)
  9. linux系统网络对时,Linux系统网络优化【转】
  10. go float64 转int_深挖Go函数之深度解析(下):可变参数