网站首页 > 精选教程 正文
二进制
对于任何已知类型的传统计算机而言,均以1和0作为编码形式进行程序计算。
在电路结构中,高电平与低电平对应表示1和0。
计算机内部表示任何数据都是用二进制。而与人进行交互时,可以将数据转换成人可以理解的内容:10进制、文字、图片、音频视频。
不同进制的计算方式是相通的:
十进制十进制逢十进一 | 二进制二进制逢二进一 |
9+1 --> 10 | 1+1 --> 10 |
99+1 --> 100 | 11+1 --> 100 |
从0开始一直加1:
十进制 二进制
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
. .. | ... |
128 | 10000000 |
十进制乘10和二进制乘2运算比较:
十进制乘10 | 二进制乘2 |
93*10 --> 930 | 1*2 --> 10 |
930*10 --> 9300 | 10*2 --> 100 |
9300*10 --> 93000 | 100*2 --> 1000 |
93000*10 --> 930000 | 1000*2 --> 10000 |
常用的二进制值:
十进制 | 二进制 | 用2的指数表示 |
1 | 1 | 2^0 |
2 | 10 | 2^1 |
4 | 100 | 2^2 |
8 | 1000 | 2^3 |
16 | 10000 | 2^4 |
32 | 100000 | 2^5 |
64 | 1000000 | 2^6 |
128 | 10000000 | 2^7 |
256 | 100000000 | 2^8 |
512 | 1000000000 | 2^9 |
1024 | 10000000000 | 2^10 |
2048 | 100000000000 | 2^11 |
4096 | 1000000000000 | 2^12 |
8192 | 10000000000000 | 2^13 |
每加一个0都是乘2,所以用2的指数来表示。
例如 10000000,1后面有7位,就可以用2的7次方表示。
用2的指数可以很方便的表示任意的数字值:
10进制 | 2进制 | 2的指数 |
1 | 00000001 | 2^0 |
8 | 00001000 | 2^3 |
16 | 00010000 | 2^4 |
32 | 00100000 | 2^5 |
相加 | 相加 | |
57 | 00111001 |
bit 和 byte
bit - 位
byte - 字节
一个 bit 表示一个电位,1 或 0;一个 byte 表示 8 个电位。
个人安装的光纤宽带如果是 100 兆宽带,下载最高速度只能到十几兆,这是因为采用的表示单位不同。100兆宽带指的是100兆bit,我们一般说下载速度指的是byte,那么100兆bit换算成byte需要除8,也就是 12.5 兆 byte。
java 中的 byte 类型
java 中的 byte 类型整数是单字节类型,也就是说,它使用 8 位(bit) 来表示整数。
8 位(bit)能表示的数字:
10进制 | 2进制 |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
4 | 00000100 |
5 | 00000101 |
6 | 00000110 |
7 | 00000111 |
8 | 00001000 |
... | ... |
255 | 11111111 |
但是,java中,byte类型的左侧的一位规定用来表示符号,0表示正数,1表示负数。那么它表示数字的位就只有7位,而不是8位:
java 中 byte 类型表示正数:
10进制 | 2进制 |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
4 | 00000100 |
5 | 00000101 |
6 | 00000110 |
7 | 00000111 |
8 | 00001000 |
... | ... |
127 | 01111111 |
java 中 byte 类型表示负数:
java 的 byte 类型如何表示负数?我们先从 0-1 这个运算来看:
java 中的负数运算,执行的是与正数相同的加减运算,这样执行 0-1 运算得到的二进制值是 11111111,表示 -1,那么可以以此类推,继续执行减1运算减到最小:
-128 | 10000000 |
... | ... |
-8 | 11111000 |
-7 | 11111001 |
-6 | 11111010 |
-5 | 11111011 |
-4 | 11111100 |
-3 | 11111101 |
-2 | 11111110 |
-1 | 11111111 |
10进制 | 2进制 |
0 | 00000000 |
1 | 00000001 |
2 | 00000010 |
3 | 00000011 |
4 | 00000100 |
5 | 00000101 |
6 | 00000110 |
7 | 00000111 |
8 | 00001000 |
... | ... |
127 | 01111111 |
四种整数类型的最小和最大值
与 byte 类型同理,short,int 和 long 也是用相同的方式表示整数。这四种类型的最小值和最大值分别可以这样表示:
byte(1字节,8位):
2进制 | 2的指数 | |
最小 | 10000000 | -2^7 |
最大 | 01111111 | 2^7 - 1 |
short(2字节,16位):
2进制 | 2的指数 | |
最小 | 10000000 00000000 | -2^15 |
最大 | 01111111 11111111 | 2^15 - 1 |
int(4字节,32位):
2进制 | 2的指数 | |
最小 | 10000000 00000000 00000000 00000000 | -2^31 |
最大 | 01111111 11111111 11111111 11111111 | 2^31 - 1 |
long(8字节,64位):
2进制 | 2的指数 | |
最小 | 10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 | -2^63 |
最大 | 01111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 | 2^63 - 1 |
二进制和十进制的互转
java 中提供了二进制和十进制的互转方法:
十进制转二进制
Integer.toBinaryString(int i)
String s = Integer.toBinaryString(257);
System.out.println(s);
// 打印结果: 100000001
1
2
3
4
二进制转十进制
Integer.parseInt(String s, int radix)
- 第二个参数指定进制
- 这里不支持直接使用负数的二进制码来表示负数,而是要用正数的二进制码添加负号来表示
int a = Integer.parseInt("1100101101", 2);
System.out.println(a);
// 打印结果: 813
- 上一篇: 二进制如何转换成十进制?
- 下一篇: C语言实现十进制转二进制
猜你喜欢
- 2024-11-20 整数十进制与二进制之间的转换
- 2024-11-20 工控人必须掌握的知识:二进制、八进制、十进制、十六进制的转换
- 2024-11-20 二进制1101100怎么转成十进制aq?
- 2024-11-20 学PLC必须要搞不清楚,十进制和二进制是如何互相转换的 #PLC
- 2024-11-20 进制转换小课堂:轻松掌握八进制与十进制之间的相互转换
- 2024-11-20 Java基础,数据类型,类型转换,Java转义符,Java中的进制
- 2024-11-20 攻城狮眼里的二进制和十进制转换
- 2024-11-20 小学五年级奥数,二进制与十进制转换#小学数学
- 2024-11-20 十进制转换成二进制
- 2024-11-20 数论之十进制转二进制
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)