狂神说基础1

Java基础知识

计算机硬件及冯·诺依曼体系结构

在这里插入图片描述
在这里插入图片描述

常用doc命令

C&C++

  • 1972年c诞生
    • 贴近硬件,运行快,效率高。
    • 操作系统,编译器,数据库,网络系统。
    • 指针和内存管理
  • 1982年c++诞生
    • 面向对象
    • 兼容c
  • 图形领域,游戏等

Java和C++的区别

  • 都是面向对象的语言,都支持封装、继承和多态

  • Java不提供指针来直接访问内存,程序内存更加安全

  • Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。

  • Java有自动内存管理机制,不需要程序员手动释放无用内存

何为编程

为了解决问题而使用的某种程序设计语言编写程序代码,并最终得到结果的过程

人类将解决问题的思路,方法,手段通过计算机能够理解的形式告诉计算机,计算机可以通过指令一步一步去工作,完成特定任务,这种人与计算机交互的过程,叫做编程。

什么是java

java是一门面向对象编程语言,不仅吸收c++的优点,还摒弃了c++难以理解的多继承、指针等概念,因此java语言功能强大且简单。

###java特性和优势
简单性(没有头文件,没有指针,不用分配内存,语法简单)

面向对象(万物皆对象)

可移植性(可跨平台,不用在乎操作系统的硬件环境,一次编写,到处运行)

高性能 (即时编译)

分布式(可以处理很多tcp、ip协议,通过url统一资源定位符访问资源,支持远程调用)

动态性(通过反射机制实现动态性)

多线程(提高交互性)

安全性(防病毒防篡改,异常机制等)

健壮性(使用的人多 开源)

三高:

高可用 高性能 高并发

jdk1.5之后三大版本

javase 标准版 开发部署在桌面、服务器、嵌入式环境和实时环境中使用的java应用程序,支持javaweb服务开发的类,并为javaee、javame提供基础 (占领桌面)

javaee 企业版 帮助开发和部署可移植、健壮、可伸缩和安全的服务器端java应用程序。提供web服务、组件模型、管理通信api,可以用来实现企业级的面相服务体系结构 (占领服务器)

javame 微型版 在移动设备上运行的应用程序提供一个健壮且灵活的环境。javame包括灵活地用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的联网和离线应用程序的丰富支持。给予javame规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能 (占领手机)

JVM、JRE、JDK的关系

JVM (java virtual machine)java虚拟机,java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此java语言可以实现跨平台。

JRE (java runtime environment)java运行环境,包括java虚拟机和java所需的核心类库等。包含:运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理等,系统缺省加载这个包

JDK (java development kit)java开发工具包 包括了jre,还有其他开发工具:编译工具 javac.exe 打包工具 jar.exe等
在这里插入图片描述
在这里插入图片描述

java程序运行机制

例子 就是一个中国人一个美国人 把中国的三国演义 编译一下翻译成英文版本给美国人看就是编译 美国人找了一个翻译 让他一段一段翻译 就是解释型 如果版本变化了 编译型就要重新编译 成本较大 翻译官可以实时翻译 节省一点成本

  • 编译型

  • 解释型

  • 程序运行机制

在这里插入图片描述

什么是跨平台性,原理是什么

java语言编写的程序,一次编译,可在多个系统平台运行

原理:java程序通过虚拟机在系统平台运行,只要该系统可以安装java虚拟机,就可以运行java程序

什么是字节码?采用字节码的最大好处是什么

字节码:

​ Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。

采用字节码的好处:

Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。

先看下java中的编译器和解释器:

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译器编译后变成字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释。

Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

标识符

在这里插入图片描述
java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

在这里插入图片描述
instance of 实例

transient 短暂的

assert 断言

strictfp 精确浮点

volatile 挥发性

const 常量

自增自减+幂运算

public class Demo01 {
    public static void main(String[] args) {
        int a=3;
        System.out.println(a);
        int b=a++;   //执行完这行代码后,先给b赋值,再自增
        System.out.println(a);
        int c=++a;  //执行完这行代码前,线自增,再给c赋值,
        int d=a++ + ++b;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        //幂运算 2^3 使用工具类进行操作
        double pow=Math.pow(2,3);
        System.out.println(pow);
    }
}
输出结果
3
4
6
4
5
9
8.0

数据类型

强类型语言

​ 要求变量的使用更加严格符合规定 所有变量必须先定义后使用

弱类型语言 vb js

基本数据类型(primitive type)

  • 数值型
    • 整数类型(byte,short,int,long)
    • 浮点类型(float,double)
  • 字符型(char)
  • 布尔型(boolean)

引用数据类型(reference type)

类(class)

接口(interface)

数组([])

Java基本数据类型图

在这里插入图片描述
操作比较大的数时 可以使用 _ 进行分割 :10_0000_0000 jdk7新特性

数据类型扩展及面试问题

public class Demo02 {
    public static void main(String[] args) {
        //正数拓展 进制 二进制 0b 十进制 八进制 0 十六进制 0x
        int a=10;
        int a1=0b10;
        int a2=010;
        int a3=0x10;
        int b=31;
        System.out.println(31/2);  //15
        System.out.println(a);    //10
        System.out.println(a1);   //2
        System.out.println(a2);   //8
        System.out.println(a3);   //16
        //浮点数拓展? 银行业务怎么表示? 钱
        //类  bigDecimal
        //double
        //float  有限 离散 摄入误差 大约 接近不等于1
        //double
        //最好完全避免使用浮点数
      float f=0.1f;//0.1
        double d=1.0/10; //0.1
        System.out.println(f==d); //false
        float d1=2313132312312313f;
        float d2=d1+1;
        System.out.println(d1==d2); //true
        System.out.println(f);
        System.out.println(d);
        //字符串拓展?
         char c1='a';
         char c2='A';
         char c3='0';
         char c4=' ';
        System.out.println((int)c4);
        System.out.println((int)c1);
        System.out.println((int)c2);
        System.out.println((int)c3);
        //所有字符的本质还是数字
         char c5='\u0061';
        System.out.println(c5);  //a
        //转义字符
        // \t  制表符  \n 换行
        System.out.println("hello\tworld");
        System.out.println("hello\nworld");
           //布尔值扩展
        boolean flag=true;
        if(flag){}
        if(flag){}   //两者相等
    }
}

类型转换

//类型转换
public class Demo3 {
    public static void main(String[] args) {
        //操作比较大的数时,要注意内存溢出
        //操作比较大的数时 可以使用 _ 进行分割 :10_0000_0000   jdk7新特性
        int money=10_0000_0000;
        int year=10;
        int total=money*year; //1410065408 计算的时候溢出了
        long total1=money*year; //默认是int ,转换前已经存在问题了
        System.out.println(total);
        System.out.println(total1);
        long total2=(money*(long)year); //先把一个数转换为long,自动提升为long
        System.out.println(total2);

    }

变量

在这里插入图片描述

常量

在这里插入图片描述

在这里插入图片描述

变量的命名规范

在这里插入图片描述

变量作用域

在这里插入图片描述

package com.itcast.operator;
//变量,常量,作用域  
public class Demo04 {
    //实例变量:从属于对象,如果不自行初始化,这个类型的默认值 0  或者小数0.0
    //布尔值: 默认是false
    //除了基本类型,其余的默认值都是null
    //类变量 +static关键词就是类变量 从属于类
    static double salary=2500;  //类变量
    int age;   //实例变量
    String name;
    boolean a;
    public static void main(String[] args) {
        int a=10;  //局部变量,必须声明和初始化
        System.out.println(a);
        //变量类型 变量名字 =new Demo04();
        Demo04 demo04=new Demo04();
        System.out.println(demo04.age);
        System.out.println(demo04.name);
        System.out.println(demo04.a);
        System.out.println(salary);
    }
    //其他方法
    public void add(){
    }
}

ctrl d:复制当前行到下一行

自增自减运算符


public class Demo01 {
    public static void main(String[] args) {
        int a=3;
        System.out.println(a); //3
        int b=a++;   //执行完这行代码后,先给b赋值,再自增   
        //a++ a=a+1;  a:4
        System.out.println(b); //b:3
        int c=++a;  //执行完这行代码前,先自增,再给c赋值 a=a+1    c:5
        System.out.println(c);  // c:5
        int d=a++ + ++b;        // d:9
        System.out.println(a);  // a:6
        System.out.println(b);  // b:4
        System.out.println(c);  // c:5
        System.out.println(d);  // d:9
        //幂运算 2^3 使用工具类进行操作
        double pow=Math.pow(2,3);
        System.out.println(pow); 8.0
    }
}

逻辑运算符、位运算符
在这里插入图片描述

public class Demo05 {
    public static void main(String[] args) {
        int a=10;
        int b=20;
        a+=b;
        a-=b;
        System.out.println(a);
        //字符串连接符 + ,String
        System.out.println(""+a+b);
        System.out.println(a+b+"");
    }
}

三元运算符

在这里插入图片描述

Doc

public class Doc {
    String name;
    /**
     * @author zhangxiaodong
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name)throws Exception{
        return name;
    }

}

在这里插入图片描述

javadoc -encoding UTF-8 -charset UTF-8 Doc.java

字节

在这里插入图片描述

’a’ = 97

’A’ = 65

’0’ = 48

’nbsp’ =32

进制问题

**B表示二进制 ** (010100101)B

O、Q表示8进制 (12565)O或者是(12565)Q

H表示16进制 (56BBA)H

 //正数拓展 进制 二进制 0b 十进制 八进制 0 十六进制 0x
        int a=10;
        int a1=0b10;
        int a2=010;
        int a3=0x10;
        int b=31;
        System.out.println(31/2);  //15
        System.out.println(a);    //10
        System.out.println(a1);   //2
        System.out.println(a2);   //8
        System.out.println(a3);   //16

一、数制解释:
1、编程中经常使用的数制分类(“你编程时能使用的数制全部在这里了”):

  • ⑴、十进制 –十进制是我们生活中使用得最频繁的进制了。
    十进制的基数是10,也就是说,十进制有10个数字符号,分别是0,1,2,3,4,5,6,7,8,9。最大的数码是9(最大的数码是进制基数减1),最小的数码是0,我们平常随便写一些数字,比如:2356,35,109等等,默认这些都是十进制数(虽然2356,35也可能是表示八进制数)。如果你需要更明确表示是10进制数,可以这么表示:(2356)D–这表示了这个2356表示的是一个十进制数。那么,数制和基数的关系怎么体现呢r?通过表示一个数的具体数制组成来体现,比如2356:6 * 10^0+5 * 10^1+3 * 10^2+2 * 10^3=2356。我们可以发现,给出一个数,首先从个位数开始,个位数值乘以基数的0次方(一定要记住,这里必须是从0次方开始的),十位数乘以基数的1次方,百位数乘以基数的2次方…以此类推,一直到最高位,最后将结果累加起来,这里就完全能看出2356是如何通过十进制表示的了。

  • ⑵、二进制 二进制是计算机唯一使用的进制。
    二进制是计算机唯一使用的进制,因为计算机的根本是电路,电路只能表示两种情况,一种情况为没有电,可以表示数字0,一种情况为有电,可以表示数字1,再无第三种情况(有兴趣可以自行了解或者关注后期博文,这里不再赘述),所以很自然的,只有两个数字符号(0,1)的进制,就是二进制。二进制的基数是2,它的最大数码也是基数减1,就是1,最小数码是0。如果需要用二进制来表示一个数,只能是不断的01001001001111011等(想学代码的都知道摩尔定律以及集成电路,晶体管等等,一个集成电路板上面有几十亿个晶体管,所以你不用担心二进制表示数制会有限制,它可以是很大,超出你的想象),不可能出现第三个数字符号。如果出现了,就绝对不是二进制表示。如果你想明确地表示是二进制,可以这么表示:(010100101)B。 B表示二进制
    这里就有一个问题了,比如我这么描述,这是我用的第0000 0101台电脑,这是她买的第0000 0110台法拉利,那么,你对这个0000 0101和0000 0110有确切的概念吗?具体是多少你知道吗?所以,我们在已经习惯了10进制的前提下,对二进制是非常不习惯,甚至觉得二进制是晦涩难懂的,那么,二进制能不能转换成十进制呢?可以,转换的过程同时也体现了数制和基数的关系。
    0000 0110转换为10进制:(二进制里面没有"个位、十位、百位",只能通过从左到右或者从右到左第几位来描述),从右往左开始,第一位是0,进制的基数是2,那么就是0*2^0 ,第二位是1,就是1 * 2^1 ,第三位是1,就是1 * 2^2,第四位及以上都是0了,那么不必再计算,于是0000 0110转换成十进制是0 * 2^0+1 * 2^1+1 * 2^2=6;0000 0101转换成十进制是5。 结果出来了,那么你对5,6这种十进制表示就有非常明确的概念了。
    在上面的十进制中也涉及到了转换过程,也是利用数位上的值乘以进制基数的幂次方的情况,但是2356经过转换以后还是2356,而二进制中却将0000 0110转换成了6,0000 0101转换成了5这些表示形式,是因为2356本身就是10进制表示,转换成10进制,所以没有任何变化,而0000 0110,0000 0101原先是二进制表示,转换成了10进制所以有变化,包括后面即将提到的八进制以及十六进制,我们都是需要转换成10进制才能有确切的概念,八进制是利用数位上的值乘以进制基数(8)的幂次方来转换,十六进制是利用数位上的值乘以进制基数(16)的幂次方来转换。在后期的编程语言学习中会存在大量的二、八、十六进制转换为十进制的情况。所以整个转换过程需要熟练掌握!

  • ⑶、八进制、十六进制 主要作用就是将数值的识别和表达简单化。
    八进制在编程语言范围内没有固定的使用情形,它的基数是8,总共有8个数字符号(0,1,2,3,4,5,6,7),八进制的最大数码是基数减1,就是7,最小数码是0,如果你要确切表示一个数是八进制的,可以这么表示(12565)O或者是(12565)Q,在C和C++中八进制的表示是额外在数值前面加一个0,比如123是十进制,而0123就是八进制。
    十六进制在编程语言范围内也没有固定的使用情形(计算机网络中最新的IPv6地址使用的就是十六进制,计算机系统的注册表也会用到),它的基数是16,总共有16个数字符号(0,1,2,3,4,5,6,7,8,9,A[表示10],B[表示11],C[表示12],D[表示13],E[表示14],F[表示15]),因为0-9不够用,所以就借了6个字母,字母不区分大小写,对比前面几种进制,只要一个数的表示中出现了字母,就一定是16进制。十六进制的最大数码也是基数减1,就是15(F),最小数码也是0,如果你需要确切表示一个数是十六进制的,可以这么表示**(56BBA)H**,在C和C++中,十六进制的表示是额外在数值前面加一个0x,比如123是十进制,0x123是十六进制。
    八进制和十六进制转换成十进制,请根据二进制的转换说明自己试一试(替换对应的进制基数就可以了)。

    计算机中使用的都是二进制,八进制和十六进制的出现其实都不是计算机的需要,它们的出现完全是出于表达和识别的方便性考虑的。
    一个较大的数用二进制表示就太长了,比如一个int类型的100(4个字节,总共32),用二进制表示就是0000 0000 0000 0000 0000 0000 0110 0100,这还是一个比较小的数,如果更大,将会更复杂,写这么长,确实有些不便,于是,就出现了更简易的八进制,十进制,十六进制,数制越大,表示一个数所需的数码位数就越少,所以CC++代码中不能直接输入二进制,但是允许输入八进制、十进制、十六进制。
    那为什么没有出现什么七进制,九进制呢?因为816分别是23次方、4次方。使得这3种进制之间转换起来很方便。
    八进制、十六进制即缩短了数的表示位数,同时保持了二进制数的表达特点。
    

⑷、二、八、十六进制转换成十进制 –上文提到的其他进制转换成十进制都是用乘的,很明显这里是上文的逆过程,都是用除的 。
十进制转换成二进制(你如果喜欢钻研的话,可以将二进制转换成十进制,以及十进制转换成二进制的过程并排成两列放在一起,你就能看明白很多东西):
下面我直接上示例了:
十进制48转换成二进制(由于工具有限,我将用表格形式说明相互间的关系,希望有兴趣又对这些知识点并不熟悉的码友能根据我的描述用纸笔再演练一遍):

计算过程结果余数
48/2240
24/2120
12/260
6/230
3/211

计算过程主要说明了整个演算的步骤以及各个值是如何得来的,因为是转换成二进制。所以用48除以进制基数2,直到结果为1(为什么说直到结果为1,因为不管任何数,按照上面的演算方式不断除以2,最后的结果一定是1),然后将结果的1放在最前面,后面依次写上每一步的余数,注意,这里每一步的余数是倒序(也就是从下往上排列),也就是说排在结果1后面的余数是计算过程3/2的余数,然后是计算过程6/2的的余数…所以最后得出十进制数48的二进制表示是110000。如果是byte类型,需要在前面补0,直至8位:0011 0000,如果是int类型就是:0000 0000 0000 0000 0000 0000 0011 0000。
十进制550转换成二进制:

计算过程结果余数
550/22750
275/21371
137/2681
68/2340
34/2170
17/281
8/240
4/220
2/210

结果为:10 0010 0110,如果是int类型,则补齐32位,结果是:0000 0000 0000 0000 0000 0010 0010 0110。
实际上,二进制为什么需要从最后的余数开始,你们仔细思考一下:是不是和二进制转换成十进制的时候,进制基数2的幂次方是从0开始的有关。
还有一个问题需要强调,就是为什么上面表格中的奇数除以2,不会出现浮点数,这是因为,上面的除法都是整数类型,不涉及浮点数类型,所以,整数类型的除法结果都是整数,直接舍弃了小数部分,所以31除以2,结果是15,而不会是15.5。

试验Java中整数的除法运算直接舍弃了小数部分,仅保留整数部分!

八进制转换成十进制:

365.2Q=3*8^2 +

6*8^1+

5*8^0+

2*8^-1 = 245.25

负次方

在这里插入图片描述

这里我就直接上示例了:
十进制48转换位八进制的表示:

计算过程 结果 余数
48/8 6 0
结果为60,这里需要特别注意的是,千万不要受二进制的影响,非要得到结果为1,这里不可能为1,因为进制基数变成了8,所以,48/8得出的结果是6,已经比进制基数8更小了,就没有再计算下去的必要(因为再计算下去就是6/8,结果是0了),于是从结果6开始,倒序排列各步骤的余数,得到的结果就是60(10进制转换成8进制的时候,一旦得到的结果比8更小,则说明是最后一步了)。
十进制360转换为八进制表示:

计算过程 结果 余数
360/8 45 0
45/8 5 5
结果5比进制基数8小,所以结果就是550。
十进制48转换位十六进制的表示:

计算过程 结果 余数
48/16 3 0
十六进制与8进制一样,只要得到的结果比进制基数更小,则停止运算,所以结果是30。
十进制100转换位十六进制的表示:

计算过程 结果 余数
100/16 6 4
结果为:64。

⑸、二、八、十六进制间的相互转换
二进制转换为八进制:
在这里插入图片描述

八进制转换成二进制
//先有八进制 2467.32 转换成10进制

2467.32  2 *8 ^ 3  +  4 *8 ^2 +6 *8 ^1  +7 *8 ^0 +3 * 8 ^-1  +2* 8 ^-2

​          1024         256       48         7        3/8       1/32 

=1335.40625  

//再由十进制转换成2进制

1335.40625  

正数部分 1335

​         结果     余数

1335/2    667      1

667/2     333      1

333/2     166      1

166/2      83      0

83/2       41      1

41/2       20      1

20/2       10      0

10/2       5       0

5/2        2       1

2/2        1       0

结果为10100110111

负数部分        结果         整数

0.40625 *2    0.8125       0
0.8125 *2     1.625        1
0.625 *2      1.25         1
0.25*2         0.5         0
0.5*2           1          1

结果为0.01101    两者相加   10100110111.01101

这里转换的时候是有技巧的,之前说过了,为什么是八进制、十六进制,而不是七进制,九进制,因为8=2^3,16=2 ^4。
所以二进制转换成八进制的时候,只需要将二进制的表示从右往左开始,每三位二进制数为1组 ,分到最后如果不足3位,那么剩下多少位就是多少位,再用每组的二进制的每一位数从右往左依次乘以20、21、2^2,然后相加,得出一组的结果,最后将所有组的结果相连,得出最终的结果(这里注意了,二进制转换为八进制的时候是分组了,并且最后是将每组的结果相连,而不是相加)。
这里,我具体举个例子:
二进制(0011 0101)B转换为八进制表示是什么结果:
首先,将二进制从右至左进行分组:
分别是 第一组:101 第二组:011 第三组:00。实际上,第三组没意义了,因为都是0,我们来关注前两组
第一组计算过程是:1 * 2^0+0 * 2^1+1 * 2^2=5;
第二组计算过程是:0 * 2^0+1 * 2^1+1 * 2^2=6;

1111111

127

所以最后的结果是65。也就是用6和5直接相连,而不是相加,这里还要注意一下相连的顺序问题,是6–5的方向。
PS:这里你需要回顾一下二进制转换10进制的方法。加深一下印象,好区别(以上二进制转换成十进制是53)。

二进制转换为十六进制

二进制转换为十六进制就是将二进制每四位二进制为一组,其他与八进制转换为二进制一样。

在这里插入图片描述

八进制转换为二进制
只需要将八进制的每一个数用三位二进制表示,然后相连既可以。
十六进制转换为二进制
只要需要将十六进制的每一个数用四位二进制表示,然后相连即可。
八进制转换为十六进制
不要以为八和十六之间存在倍数2的关系就有什么捷径,实际上没有,需要通过二进制中转一下。
所以需要先将八进制转换成二进制,在转换成十六进制。
十六进制转换成八进制
需要将十六进制转换成二进制,再将二进制转换成八进制。
在这里插入图片描述

29.6875 十进制转化成二进制

正数部分转化 余数部分

29/2 14 1

14/2 7 0

7/2 3 1

3/2 1 1

1/2 0 1 11101

小数转化 整数部分

0.6875*2 1.375 1

0.375*2 0.75 0

0.75*2 1.5 1

0.5*2 1 1 1011

两个相加 11101.1011

二进制互加

1010 + 0101 = 1111

1011+

1101 = 11000B

从最左边 逢二进一 1+1 =2 2/2=1 故倒数第二位进一 倒数第一位等于0 以此类推

二进制减法 前一位借后一位 2

1100 -

1001 0011B

十六进制加法

47H +

96H = D D H

十进制负数转化成二进制

1.将十进制输转化成二进制数,不管符号。
2.对转化的二进制数逐位取反
3.对取反后的二进制数加1,结果就是十进制负数转化成的二进制数。
例:-32转化成二进制数
1.(十进制)32=(二进制)00100000
2.(二进制)00100000逐位取反为:11011111
3.二进制数+1得:11100000

例:-5转化成二进制数
1.(十进制)5=(二进制)00000101
2.(二进制)逐位取反为:11111010
3.二进制数+1得:11111011

信息在计算机中的表示

在这里插入图片描述
解释: 八位二进制 最小的是 0000 0000 最大的是 1111 1111 转化成十进制 为255
在这里插入图片描述
在这里插入图片描述

如果是-43最前面填1 10101011

如果是43 最前面填0 00101011 (原码) 正数原码、反码、补码都是一样的1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值