当前位置: 首页 > article >正文

【学习归纳自我总结版】尚硅谷学习第二天

数据存储和运算符

1.进制

1.1进制的分类
十进制二进制八进制十六进制
数字范围0-90-10-70-9,a-f
进位规则逢十进一逢二进一逢八进一逢十六进一
示例12501111757F
说明每三位二进制是一位八进制值每四位二进制是一位十六进制值
1.2在代码中如何表示四种进制的常量值
  1. 十进制:正常表示
  2. 二进制:0b或0B开头
  3. 八进制:0开头
  4. 十六进制:0x或0X开头

2.计算机存储单位

  • **字节(Byte):**是计算机信息技术用于计量存储容量的一种计量单位,一字节等于八位。
  • **位(bit):**是数据存储的最小单位,也就是二进制。二进制数系统中,每个0或1就是一个位,叫做bit(比特),其中8bit就称为一个字节(Byte)。
  • 转换关系
    8 bit = 1 Byte
    1024 Byte = 1KB
    1024 KB = 1MB
    1024 MB = 1GB
    1024 GB = 1TB
  • float:单精度浮点型,占内存:4个字节,精度:科学计数法的小数点后6~7位。
  • double:双精度浮点型,占内存:8个字节,精度:科学计数法的小数点后15~16位。

3.计算机如何表示数据

3.1原码、反码、补码与符号位概念

计算机数据的存储使用二进制补码形式存储,并且最高位是符号位,最高位1是负数,最高位是0为正数。
规定:

  • 正数的补码与反码、原码一样,称为三码合一;
  • 负数的补码与反码、原码不一样;
  • 负数的原码:把十进制转为二进制,然后最高位设置为1
  • 负数的反码:在原码的基础上,最高位不变,其余位取反
  • 负数的补码:反码+1
3.2如何表示小数?
  • 为什么float(4个字节)比long(8个字节)的存储范围大?
  • 为什么float和double不精确?
  • 为什么double(8个字节)比float(4个字节)精度范围大?
    因为float、double底层也是二进制,先把小数转为二进制,然后把二进制表示为科学计数法,然后只保存:①符号位②指数位(需要移位)③尾数位
  • 浮点数的二进制
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    float类型小数:8.25
    8.25的二进制:1000.01
    1000.01转为科学计数法:1.00001*2的3次,小数点往左移动3位
    符号位0,指数位3+127(偏移量)=130转为二进制为10000010,尾数00001,低位补0。
  • 0 10000010 00001000000000000000000 原码
  • 0 10000010 00001000000000000000000 反码
  • 0 10000010 00001000000000000000000 补码
3.3一个字符到底占几个字节?

在JVM中,一个字符占2个字节,Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。char类型的数值参与算术运算或比较大小时,都是用编码值进行计算的。
在文件中保存或网络中传输时文本数据时,和环境编码有关。如果环境编码选择ISO8859-1(又名Latin),那么一个字符占一个字节;如果环境编码选择GBK,那么一个字符占1个或2个字节;如果环境编码选择UTF-8,那么一个字符占1-4个字节。

4.基本数据类型转换

4.1自动类型转换(隐式类型转换)

自动转换:将取值范围小的类型自动提升为取值范围大的类型。
转换规则

  • 当把存储范围小的值(常量值、变量的值、表达式计算的结果值)赋值给存储范围大的变量时。
  • 当存储范围小的数据类型与存储范围大的数据类型一起混合运算时,会按照其中最大的类型运算。
  • 当byte、short、char数据类型进行算术运算时,按照int类型处理。
4.2强制类型转换(显式类型转换)

强制类型转换:将取值范围大的类型强制转换成取值范围小的类型。
比较而言,自动转换是Java自动执行的,而强制转换是需要我们自己手动执行。
转换格式

数据类型 变量名  = (数据类型)被强转数据值

转换规则

  • 当把存储范围大的值(常量值,变量的值,表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出
  • 当把某个值想要提升数据类型时,也可以使用强制类型转换
4.3逻辑运算符

逻辑运算符:用来连接两个布尔类型值的运算符(!除外),运算结果也是boolean值true或者false。
注意:&&和&的区别,||和|区别

  • &&和&的区别:&&有短路效果,左边为false,右边不执行;&左边无论是什么,右边都会执行。
  • ||和|的区别:||有短路效果,左边为true,右边不执行;|左边无论是什么,右边都会执行。
4.4位运算符
位运算符符号解释
&按位与,当两位相同为1时才返回1
|按位或,只要有一位为1即可返回1
~按位非,将操作数的每个位(包括符号位)全部取反
^按位异或。当两位相同时返回0,不同时返回1
<<左移运算符
>>右移运算符
>>>无符号右移运算符
  • 位运算符的运算过程都是基于补码运算,但是看结果,我们得换成原码,再换成十进制看结果。
  • 从二进制到十进制都是基于原码。
  • 正数的原码反码补码都一样,负数原码反码补码不一样
  • byte,short,char在计算时按照int类型处理
    如何区分&,|,^是逻辑运算符还是位运算符?
    如果操作数是boolean类型,就是逻辑运算符,如果操作数是正数,那么就是位运算符。
4.4.1左移<<
  • 运算规则:左移几位就相当于乘以2的几次方
  • 注意:当左移的位数n超过该数据类型的总位数时,相当于左移(n-总位数)位
4.4.2右移>>
  • 快速运算:类似于除以2的n次,如果不能整除,向下取整。
4.4.3无符号右移>>>
  • 运算规则:往右移动后,左边空出来的位直接补0,不看符号位
  • 正数:和右移一样.
  • 负数:右边移出去几位,左边补几个0,结果变为正数.
4.4.4运算符优先级

口诀:
单目运算排第一;
乘除余二加减三;
移位四,关系五;
等和不等排第六;
位与,异或和位或;短路与和短路或;
依次从七到十一;
条件排在第十二;
赋值一定是最后.


http://www.kler.cn/a/302440.html

相关文章:

  • Leecode热题100-35.搜索插入位置
  • MySQL系列之如何在Linux只安装客户端
  • 性能测试|JMeter接口与性能测试项目
  • 力扣104 : 二叉树最大深度
  • Linux 系统管理和监控命令---- auditctl命令
  • MacOS 本地生成SSH key并关联Github
  • FreeBSD兼容模式linux账户指向FreeBSD账户造成的困扰
  • udp聊天室
  • 【50 Pandas+Pyecharts | 暑期档电影票房数据分析可视化】
  • 深入探讨 Flannel 技术:性能、缺陷与优点
  • sql格式化工具
  • MongoDB 原子操作
  • 【计算机网络】UDP 协议详解及其网络编程应用
  • vue3中实现拖拽排序(vue-draggable-next的使用)
  • SVM 监督学习
  • Linux CentOS更换阿里云源解决Could not retrieve mirrorlist http://mirrorlist.centos.org
  • 电脑监控软件系统有哪些?|2024年干货整理,赶紧码住!
  • css父容器溢出隐藏 子容器溢出滚动
  • 使用TLS解决Docker API暴露2375端口的问题
  • C++-----STL简介(了解)
  • 【数据结构】第八节:链式二叉树
  • 为什么学习Python数据分析?学会能干什么?python数据分析有什么用
  • 研1日记10
  • 保证缓存一致性
  • Debian11.9镜像基于jre1.8的Dockerfile
  • ppt图标去哪找?自带素材库的在线PPT软件,免费获取!