java编程基础(一)二进制

article/2025/8/21 14:58:31

文章目录

  • 二进制
  • 面试题
  • bit 和 byte
  • java 中的 byte 类型
    • java 中 byte 类型表示正数:
    • java 中 byte 类型表示负数:
  • 四种整数类型的最小和最大值
  • 二进制和十进制的互转
  • 练一练
  • java 代码中直接写二进制字面值
  • 代码仓库

二进制

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

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

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

| 十进制
十进制逢十进一 | 二进制
二进制逢二进一 |
| — | — |
| 9+1 --> 10 | 1+1 --> 10 |
| 99+1 --> 100 | 11+1 --> 100 |

从0开始一直加1:

十进制二进制
00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011
12810000000

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

十进制乘10二进制乘2
93*10 --> 9301*2 --> 10
930*10 --> 930010*2 --> 100
9300*10 --> 93000100*2 --> 1000
93000*10 --> 9300001000*2 --> 10000

常用的二进制值:

十进制二进制用2的指数表示
112^0
2102^1
41002^2
810002^3
16100002^4
321000002^5
6410000002^6
128100000002^7
2561000000002^8
51210000000002^9
1024100000000002^10
20481000000000002^11
409610000000000002^12
8192100000000000002^13

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

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

10进制2进制2的指数
1000000012^0
8000010002^3
16000100002^4
32001000002^5
相加相加
5700111001

面试题

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

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

bit 和 byte

  • bit - 位
  • byte - 字节

b

一个 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进制
000000000
100000001
200000010
300000011
400000100
500000101
600000110
700000111
800001000
25511111111

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

java 中 byte 类型表示正数:

10进制2进制
000000000
100000001
200000010
300000011
400000100
500000101
600000110
700000111
800001000
12701111111

java 中 byte 类型表示负数:

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

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

10进制2进制
-12810000000
-811111000
-711111001
-611111010
-511111011
-411111100
-311111101
-211111110
-111111111
----------------------------------------
000000000
100000001
200000010
300000011
400000100
500000101
600000110
700000111
800001000
12701111111

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

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

byte(1字节,8位)

2进制2的指数
最小10000000-2^7
最大011111112^7 - 1

short(2字节,16位)

2进制2的指数
最小10000000 00000000-2^15
最大01111111 111111112^15 - 1

int(4字节,32位)

2进制2的指数
最小10000000 00000000 00000000 00000000-2^31
最大01111111 11111111 11111111 111111112^31 - 1

long(8字节,64位)

2进制2的指数
最小10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000-2^63
最大01111111 11111111 11111111 11111111 11111111 11111111 11111111 111111112^63 - 1

二进制和十进制的互转

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


http://chatgpt.dhexx.cn/article/gBSwWwuh.shtml

相关文章

Java 基础

Java 基础知识点整理 Java 语言是一种优秀的编程语言,由 C 语言、C 语言发展而来。Java 语言提供了一些有效的新特性,使得使用 Java 比 C 更容易写出“无错代码”。 Java特性和优点 面向对象编程的思想,更简单有效,Java 省略了 …

Java编程基础②

Java编程基础 Java中的注释Java中的标识符Java中的关键字Java中的常量常量类型定义常量 java中的变量变量的定义及其数据类型变量的类型转换变量的作用域 java运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符运算符的优先级 java流程控制语句if条件语句switch条件语句…

第二章 Java编程基础

第二章 Java编程基础 目录 一. Java基本语法1. 基本格式2. 注释3. 标识符4. 关键字5. 常量 二. 变量1. 定义2. 数据类型3. 整数类型变量4. 浮点类型变量5. 字符类型变量6. 布尔类型变量7. 类型转换8. 自动提升9. 变量作用域 三. 运算符1. 算数…

【JAVA】1.编程基础

1.Java基本语法 JAVA基本格式: 修饰符 class 类名{ 程序代码 } public class java {public static void main(String[] args) {System.out.println("HelloWorld"); } public static void main(String[] args) {} (对于初学者来说这个部分必…

第二章Java编程基础

一、填空题 1.Java程序代码必须放在一个类中,类使用class关键词定义。 2.Java中的注释有三类,分别是单行注释、多行注释、文档注释。 3.Java语言中,int类型所占存储空间为4个字节。 4.用于比…

Java基础 —— 编程入门

一、比特(bit)和字节(byte) 一个0或者一个1存储为一个比特(bit),是计算机中最小的存储单位。计算机中是最基本的存储单元是字节(byte)。 每个字节由8个比特构成。 计算机就是一系列的电路开关。每个开关存在两种状态:关(off)和开(on)。如果电路是开的,它…

第二章:JAVA编程基础

目录 一:Java的基本语法格式 二:Java中的变量与常量 三:Java中的运算符 四:选择结构语句 五:循环结构语句 六:数组 一:Java的基本语法格式 1:语法格式 [修饰符] class 类名{…

Java编程基础知识(一)

目录 一.Java的基本语法 1.Java的基本语法格式 2.Java中的注释 3.Java中的关键字 Java中的标识符 二.Java中的常量与变量 1.常量 2.变量 三.Java中的运算符 四.数据输入 一.Java的基本语法 1.Java的基本语法格式 编写Java程序必须先声明一个类,然后再类中…

Java编程基础

目录 第一篇、Java编程基础 ❀Java中的属性名词 ❀Java数据类型 ❀转义字符 ❀&& 和 & 与 || 和 | ❀方法 第二篇、Java面向对象编程 ❀类和对象 ❀面向过程和面向对象的区别 ❀面向对象程序设计的主要特性 ❀类和对象概述 ❀对象的内存结构 ❀垃圾空间…

java编程基础(入门级)(超级完整版)

java基础编程(入门) 01基础知识 1.计算机基础 【1】进制 A.十进制转化二进制 除以2,求余数,商继续除以2,一直到0为止,从底下往上得到结果。 B.二进制转化十进制 1 | 1 | 0 | 0 2 3 ∣ 2 2 ∣ 2 1 ∣ 2 …

UFBGA176+25 封装尺寸图

下图是UFBGA17625 封装规格的参数,根据下图的参数,即可制作UFBGA17625 的PCB封装

电阻的封装规格

1.直插式电阻 卧式直插电阻的封装形式为AXIAL-xx(比如 AXIAL-0.3),0.3为焊盘中心距,单位是英寸,1 inch 25.4 mm 1000mil。 M型,电阻两端折弯。金属膜直插电阻功率-封装-尺寸对应表 封装尺寸(inch)对应长度(mm&#…

Allegro PCB封装表贴器件-0805电阻-实战-详细封装制作过程(一)

1.Allegro封装元素 使用Allegro制作PCB封装,首先我们需要了解Allegro封装组成的元素,由焊盘、外形、字符三要素组成,如图 1所示。 图 1 Allegro封装元素 2.表贴元器件 2.1 0805电阻 我们需从规格书获得0805电阻推荐焊盘尺寸,如图 …

常见的贴片LED封装尺寸规格表

LED灯珠分为表贴式(SMD)和直插式(DIP),表贴就是大家常说的贴片,也成为贴片式,本文主要介绍贴片灯珠的规格尺寸和命名。 单颗LED封装后通常以其尺寸命名,比如: 3528、5050…

0805,0603,1206这些封装的名字是什么来的

封装尺寸是长x宽,0805,0603,1206 这些单位是英制,0805代表0.8英寸x0.5英寸,而1英寸25.4毫米 (注意:封装尺寸是实物封装的尺寸,不是焊盘的或者pcb封装图的尺寸,pcb封装图的尺寸会稍微大些&#…

centos7 安装 dos2unix

https://pkgs.org/download/dos2unix 下面选择对应的安装包 如centos7下则选择 https://centos.pkgs.org/7/centos-x86_64/dos2unix-6.0.3-7.el7.x86_64.rpm.html

Centos 7 离线安装dos2unix-7.4.0-3.el8.x86_64.rpm

如果你的服务器可以通互联网,安装dos2unix,非常简单:yum install -y dos2unix 要是内网安装dos2unix 接着往下瞅。 废话少说,直接上安装包好吧!!! 链接: https://pan.baidu.com/s/1QOsHn9jVy…

Linux编码及dos2unix,unix2dos命令

通常我们在执行shell脚本的时候会遇到类似下面的错误,而事实上脚本没有任何问题,很多人会卡在这一步很久,其实有可能是编码导致的回车符不一致引起的: ERROR: $\r: command not found ^M: bad interpreter No such…

Linux命令之dos2unix

最近在linux下安装fastdfs服务器的时候,发现修改好相关的配置文件之后;启动nginx静态资源服务器,上传图片成功后,输入storage服务器给出的图片存储路径。 例如 http://192.168.1.5/group1/M00/00/00/wKgBBVfsGhyAKA81AABdr…

Linux命令学习总结:dos2unix - unix2dos

命令简介: dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。 而unix2dos则是和dos2unix互为孪生的一个命令,它是将Li…