前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >1.计算机编程通之字节与数据类型

1.计算机编程通之字节与数据类型

作者头像
张风捷特烈
发布2018-12-06 09:57:53
6100
发布2018-12-06 09:57:53
举报
零、前言

从你打开计算机的那一刻,从你开启一个手机游戏;从你观看一部电影,你都在使用字节。 可以说它们无处不在,而你又对它有多少了解呢?

1.引子
代码语言:javascript
复制
一个视频,如果用记事本打开,你会发现是一堆乱码,但你用播放器就能够播放。
当你随便改动几个字后,就会发现视频播放不了了,改回去,一切恢复正常。

1.png

代码语言:javascript
复制
可以看到6.79 MB大小的视频竟然是由这么多字组成的。
视频是由字节组成的。6.79 MB有7129600 字节

字节的进制转化:
1 B = 8 bit       1 KB = 1024 B = 8192 bit
1 MB = 1024 KB    1 GB = 1024 MB    1TB = 1024 GB
2.什么是字节呢?
代码语言:javascript
复制
字节是计算机的存储单位,我们都知道计算机只能识别二进制的数,一个字节可以储存8个二进制数(比如01010011),
也就是说这个视频的本质是7129600*8的0或1的组合排列而成,可想而在是多么复杂。
管他多复杂,我们又看不懂二进制,但计算机很喜欢读它们,计算机懂,但是我们不懂怎么办?
于是聪明的人类将二进制的数和字符对应起来,成为编码,让计算机读出来二进制,转化成我们认识的字符。
编码格式就是码表,比如ASCII码,UTF-8,GBK等
3.为什么是乱码呢?
代码语言:javascript
复制
回到为什么是乱码这个问题,记事本所展现出来是:
通过查系统默认的编码表将二进制数映射出来,就是我们看到的东西。视频的二进制数是按照视频的规则排序的,
所以记事本强行翻译得到了一堆乱码。视频播放器的解码器识别视频的二进制数,从而可以让视屏播放。
4.小结
代码语言:javascript
复制
所以无论是你录个像,还是拍个照,还是打开浏览器,写篇小说,玩个游戏,都是很多的0和1在互相影响,互相作用。
就像现实世界,无论是人、桌子、小狗、或者计算机、太阳、宇宙都是由分子构成,他们互相影响,相互作用产生了这个绚丽的宇宙。
下面就来进入到程序的世界,感受另一个"宇宙"

一、在Java中一共有八种数据类型:

byte 字节、short 短整型、int 整型、long 长整型、 float 浮点型、char 字符型 、boolean 布尔类型

1.byte : 字节

8位、有符号的,以二进制补码表示的整数

代码语言:javascript
复制
byte a = 17;
byte b = -5;
System.out.println(a + b);//12
关于二进制数的符号:
代码语言:javascript
复制
每个自然数都与二进制一一对应,那么负数怎么办?
对于二进制数的正负,将最高位作为符号位,0正,1负

二进制的正负.png

2.short:短整型

与byte的唯一区别就是占2个字节,也就是由16个二进制数组成

代码语言:javascript
复制
short a = 17;
short b = -5;
System.out.println(a + b);//12
3.int: 整型

与byte的唯一区别就是占4个字节,也就是由32个二进制数组成

代码语言:javascript
复制
int a = 17;
int b = -5;
System.out.println(a + b);//12
4.long: 长整型

与byte的唯一区别就是占8个字节,也就是由64个二进制数组成

代码语言:javascript
复制
long a = 17L;
long b = -5L;
System.out.println(a + b);//12
5.char:字符型

一个单一的 16 位 Unicode 字符;虽然用整数表示,但可以储存任何字符

代码语言:javascript
复制
char x = 97; 
char x = 'c'; //两者是等效的
char ch = 'p';//char还可以强转成int
System.out.println((int) ch);//112
6.boolean:布尔型

初始值false,范围[true、false]

代码语言:javascript
复制
boolean isOk = false;
System.out.println(!isOk);//!操作取反
7.float:浮点型

二进制中数字的正负可以用最高位作为符号位来表示,那么小数呢?

计算机中,一个数N的浮点形式可以用:
代码语言:javascript
复制
N = M*2^E
代码语言:javascript
复制
E 表示 2 的幂,称为`阶码`,确定N的小数点位置:反映浮点数的范围  
M 表示 N 的有效数字,称为`尾数`:反映数的精度

float.png

拿7.25举例:
代码语言:javascript
复制
7.25 = 7 + 0.25 = 1*2^2 + 1*2^1 + 1*2^0 +  0*2^-1 + 1*2^-2   111.01(二进制)=1.1101*2^2(二进制)

float.png

8.double:双精度浮点型

与float相似,只是占8个字节,共64bit,符号位:1bit,阶码:11bit,尾数:52bit


类型

字节数

位数

范围

初始值

byte

1

8

-2^7 ~ 2^7-1 (-128 ~ 127)

0

short

2

16

-2^15 ~ 2^15-1 (-32768~32717)

0

int

4

32

-2^31 ~ 2^31-1 (-2147483648~2147483647)

0

long

8

64

-2^63 ~ 2^63-1

0L

boolean

1

8

true/false

false

char

2

16

0 ~ 2^16-1(0 ~ 65535)

null

float

4

32

-3.4 * 10^-38 ~ 3 .4 * 10^38

0.0f

double

8

64

-1.7 * 10^-308 ~ 1.7 * 10^308

0.0d

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 零、前言
    • 1.引子
      • 2.什么是字节呢?
        • 3.为什么是乱码呢?
          • 4.小结
          • 一、在Java中一共有八种数据类型:
            • 1.byte : 字节
              • 关于二进制数的符号:
            • 2.short:短整型
              • 3.int: 整型
                • 4.long: 长整型
                  • 5.char:字符型
                    • 6.boolean:布尔型
                      • 7.float:浮点型
                        • 计算机中,一个数N的浮点形式可以用:
                        • 拿7.25举例:
                      • 8.double:双精度浮点型
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档