知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

java编程基础(一)二进制

发表时间:2022-03-25来源:网络

二进制

对于任何已知类型的传统计算机而言,均以1和0作为编码形式进行程序计算。
在电路结构中,高电平与低电平对应表示1和0。

计算机内部表示任何数据都是用二进制。而与人进行交互时,可以将数据转换成人可以理解的内容:10进制、文字、图片、音频视频。

不同进制的计算方式是相通的:

从0开始一直加1:

十进制乘10和二进制乘2运算比较:

常用的二进制值:

每加一个0都是乘2,所以用2的指数来表示。
例如 10000000,1后面有7位,就可以用2的7次方表示。

用2的指数可以很方便的表示任意的数字值:

面试题

1000个苹果,分装在若干箱子中,不管客户要多少个苹果,都可以直接交付给客户几个箱子。

问:这1000个箱子如何进行装箱?

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)能表示的数字:


但是,java中,byte类型的左侧的一位规定用来表示符号, 0表示正数,1表示负数。那么它表示数字的位就只有7位,而不是8位:

java 中 byte 类型表示正数:

java 中 byte 类型表示负数:

java 的 byte 类型如何表示负数?我们先从 0-1 这个运算来看:


java 中的负数运算,执行的是与正数相同的加减运算,这样执行 0-1 运算得到的二进制值是 11111111,表示 -1,那么可以以此类推,继续执行减1运算减到最小:

四种整数类型的最小和最大值

与 byte 类型同理,short,int 和 long 也是用相同的方式表示整数。这四种类型的最小值和最大值分别可以这样表示:

byte(1字节,8位)

short(2字节,16位): int(4字节,32位) long(8字节,64位)

二进制和十进制的互转

java 中提供了二进制和十进制的互转方法:

十进制转二进制Integer.toBinaryString(int i)String s = Integer.toBinaryString(257); System.out.println(s); // 打印结果: 100000001 二进制转十进制Integer.parseInt(String s, int radix)
- 第二个参数指定进制
- 这里不支持直接使用负数的二进制码来表示负数,而是要用正数的二进制码添加负号来表示int a = Integer.parseInt("1100101101", 2); System.out.println(a); // 打印结果: 813

练一练

输入十进制整数转成2进制;输入二进制整数转成十进制。

package demo; import java.util.Scanner; public class Test2 { public static void main(String[] args) { while (true) { System.out.print("输入十进制整数:"); int a = new Scanner(System.in).nextInt(); String s = Integer.toBinaryString(a); System.out.println(s); } } } package demo; import java.util.Scanner; public class Test3 { public static void main(String[] args) { while (true) { System.out.print("输入整数的二进制码:"); String s = new Scanner(System.in).nextLine(); int a = Integer.parseInt(s, 2); System.out.println(a); } } }

java 代码中直接写二进制字面值

java 语法中,可以使用 0b 前缀来直接写二进制码表示的整数:

int a = 0b11001; byte b = 0b1111111; // 0b前缀语法不允许直接写负数的二进制码,这样写实际表示的是正的128 byte c = 0b10000000; //此处错误 // 要写byte的最小值-128,需要写 128 的二进制码,并加负号 byte d = -0b10000000;

代码仓库

https://gitee.com/benwang6/java-review

Q.E.D.

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜