字符与字节和整数进制转换

现在回想以前所学的东西有一些遗忘,决定在复习一遍,总结一些复习笔记!

计算机语言的发展:

计算语言:

计算机直接识别的语言,二进制(语言),由0和1组成,以而为单位的进制换算数据。计算机底层对数据的处理是靠二进制。使用二进制进行开发是最直接的,原因是计算机底层直接识别的语言就是二进制;但是对于我们开发人员是有难度的。

汇编语言:

汇编语言就是由字母和一些特殊的符号组成,都代表对应意义。
对于我们开发人员阅读性提高,但是计算机不识别,会自动转成
对应的二进制。有个自动转换的过程。

程序设计语言:

纯粹的使用英文单词,阅读性就更高了,但是计算机还是不直接识别,
只识别二进制,所以也有自动转换的过程,将程序设计语言转成二进制
语言。 C C++ C#(微软) java j++(被java干掉了) object-c 、 .net 易语言

思想:

1.面向过程:C
2.面对对象:C++ C# java object-c

字符形式的程序-------->字节形似的程序
所有的高级语言,c c++ c# java对于我们简单易懂,基本都是英文,
字符形式(容易阅读,显示)。
计算机只识别二进制(字节),所以就需要将我们可看可动的字符形式
的程序语言转成计算机可懂的字节形式的语言。

把我们所编写的字符形式程序转成字节形式程序。

什么是字节和字符:

字节(byte):是[计算机]用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。

字符:字符是指计算机中使用的字母、[数字]、[字]和[符号],包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等

bit:

数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

字符与字节的换算:

英语是ASCII编码,1个字节8位二进制,共有256中组合,排英语的大小写字母,数字和部分符号绰绰有余。
而中文字很多,256完全不够,2个字节8位二进制有65536中组合,用Unicode排就可以排出,甚至一个Unicode可以排完中日韩文所有常用字。

[ASCII码]:一个英文字母(不分大小写)占一个字节的空间,一个中文[汉字]占两个字节的空间。一个[二进制数]字序列,在[计算机]中作为一个数字单元,一般为8位二进制数,换算为[十进制]。最小值0,最大值255。如一个ASCII码就是一个字节。
UTF-8编码:一个英文[字符]等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文[标点]占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。不同数量级间

存储单位:

8位一字节 bit 就是0和1 组成的 (010101010) 组成一个字节;
位 字节 千字节 兆字节 兆字节 太字节
bit byte KB MB GB TB
8bit = 1byte ; 1024b = 1kb ; 1024kb = 1MB ; 1024MB = 1GB ; 1024GB = 1TB
因此1024又称为程序员节;
在招聘网站中的 8k,10k 也是根据 千字节(KB)得来的;

整数的进制转换:

进制:单位

  1. 10进制就是以10为单位,逢10进1,所以在10进制数值的各个位上的
    数最大值是9,最小值是0,绝不出现10,因为10就进到上一位去了。
  2. 2进制就是以2为单位,逢2进1,所以在二进制数据的各个位上的数值
    最大是1,最小是0,绝不会出现2。
    计算机直接识别的语言是二进制,就是0 1组合。
  3. 8进制就是以8为单位,逢8进1,所以在8进制数据的各个位上的数值
    最大是7,最小是0,不会出现8。
    8进制数据是以 0开始为标识。
  4. 16进制就是以16为单位,逢16进1,所以在16进制数据的各个位上的
    数值最大是15,最小是0,不会出现16。
    16进制数据是以 0x开始作为标识
    数字只有09,1015是分别用字母 a~f

10进制和2进制的转换:
一、10转2:
10进制数无限除以2,倒叙取余。

2转10:
2进制数从最高位开始,当前位上的数乘以二进制的总位数
-1的2的次方,后面以此类推,最后累加和,即是其对应的10
进制数。
字符与字节和整数进制转换_第1张图片
十和二的转换.png
二进制的基数表:
         1    1     1      1     1     1    1   1
         128  64    32     16    8     4    2   1

如果是0就没有值,是1就是对应的值,然后相加!就是二进制对应的十进制数!
比如:
二进制转成十进制:就是一个成语2的次幂额过程。
0000 0110: 02(0)+12(1) + 12(2) + 0 2(3)+0*2(4)...........= 6
0 + 2 + 4 + 0 +0.............. . = 6
快速计算法:心算
0000 0110: 对应的位置: 进行相加 0 + 2 +4 = 6
2转10:
2进制各个位上的数不是1就是0,1乘以其基数就是基数,0
乘以任何数都是0。直接二进制位上是1的基数相加即可。

10转2:
通过二进制的基数表去拼10进制数,那么该二进制就是该
10进制数的二进制数。


010010110 ---> 150
17 ----> 10001
26 ----> 11010

在java中整数默认是32为的二进制的整数
有效二进制,能够表示数值的最短的二进制。
3 ---> 011(有效二进制数)
3 ---> 0000-0000 0000-0000 0000-0000 0000-0011
上面两个3占用的内存空间不一样,而表示的值的大小一样。

8位1字节,8个二进制位是一个字节:
8 bit = 1 byte

.class文件叫字节码文件:
.class文件是将.java源文件中的源代码编译成的计算机识别、
二进制数据,却叫字节码。因为在计算机中对于二进制的处理
的最小单位是字节,即使不够呢以字节也按1字节去分配空间。

规定:
1.二进制数最高位是1表示负数,最高位是0表示正数。
2.正数: 6
原码:就是其对应的二进制数
0000-0000 0000-0000 0000-0000 0000-0110
反码:和其原码一致
0000-0000 0000-0000 0000-0000 0000-0110
补码:和其原码一致
0000-0000 0000-0000 0000-0000 0000-0110

负数:-6
原码:是其相反数(对应的正数)的二进制数,
最高位(符号位)换成1。
1000-0000 0000-0000 0000-0000 0000-0110
反码:原码除了符号位,其它位都做0 1互换
1000-0000 0000-0000 0000-0000 0000-0110
1111-1111 1111-1111 1111-1111 1111-1001
补码:是其反码+1
1111-1111 1111-1111 1111-1111 1111-1001
0000 0000 0000 0000 0000 0000 0000 0001
1111-1111 1111-1111 1111-1111 1111-1010

数值在内存中的二进制的表示形式都是其补码。

二、8进制和10进制的转换:

字符与字节和整数进制转换_第2张图片
10和8.png

10转8:
10进制数无限除8,倒序取余。
8转10:
从8进制的最高位开始,当前位上的数乘以8进制数的总位数-1的
8的次方,以此类推,累加和。
三、10进制和16进制的转换:

字符与字节和整数进制转换_第3张图片
10和16.png

10转16:
10进制数无限除16,倒叙取余.
16转10:
从16进制数的最高位开始,当前位上的数乘以16进制数的总位数-1
的16的次方,以此类推,累加和。
四、8进制和2进制的转换:
2转8:

字符与字节和整数进制转换_第4张图片
8和2.png
2的3次方是8,3个二进制位是1个8进制位。
将2进制数每3位一组,每组转成其对应的10进制数,就是
一个8进制数,然后将所有的8进制数连接就组成完整的
8进制数。

000 110 101 110
0    6   5   6
0656

46+128+256=430
6*64+40+6=430

8转2:
就是将1个8进制位的数转成3位的二进制数,拼接起来
就是完整的2进制数。
 
0656
000 110 101 110

五、16进制和2进制的转换:

字符与字节和整数进制转换_第5张图片
16和2.png
2转16:
4个二进制位是1个16进制位。
将二进制数每4位分成一组,转成对应的10进制数,
拼接起来就是完整的16进制数。

0001 1010 0110
 1    10    6
 0x1a6

16转2:
将16进制数的位上的每个数转成对应的4位的2进制数,连接
起来就是完整的2进制数。

  0x1a6
  0001  1010  0110

你可能感兴趣的:(字符与字节和整数进制转换)