计算机的进制和运算

本文详细介绍了计算机中的进制系统,包括二进制、八进制和十六进制,以及它们在运算中的应用。重点讲解了移位运算,区分了逻辑右移和算术右移的区别,并探讨了浮点数的表示方法和范围。此外,还提到了数据类型、指针的概念以及ByteBuffer的三种实现方式。
摘要由CSDN通过智能技术生成

1. 基本概念

计算机处理信息的最小单位是位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。

8位二进制数被称为一个字节

字节是最基本的信息计量单位。

位是最小单位,字节是基本单位。

十进制数是以10为基数的计数方法,二进制数则是以2为基数的计数方法,八进制就是8,十六进制就是16。

2. 运算

移位运算指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。

移位有左移(向高位方向)和右移(向低位方向)两种。

示例:左移两位运算
左移和右移
补数:补数求解的变换方法就是“取反+ 1”。

为了获得补数,我们需要将二进制数的各数位的数值全部取反,然后再将结果加1。
补数
算术运算是指加减乘除四则运算。

逻辑运算是指对二进制数各数字位的0和1分别进行处理的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异或(XOR运算)四种。

  1. 逻辑非指的是0变成1、1变成0的取反操作。
  2. 逻辑与指的是“两个都是1”时,运算结果为1,其他情况下运算结果都为0的运算。
  3. 逻辑或指的是“至少有一方是1”时,运算结果为1,其他情况下运算结果都是0的运算。
  4. 逻辑异或指的是排斥相同数值的运算。
    真值表
    真值表
    示例:
    实例

3. 逻辑右移和算术右移

将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就称为算术右移。
位移

符号扩充就是指在保持值不变的前提下将其转换成16位和32位的二进制数。
符号扩充

4. 浮点数

浮点数是指用符号、尾数、基数和指数这四部分来表示的小数。
浮点数
双精度浮点数类型用64位、单精度浮点数类型用32位来表示全体小数

双精度浮点数能够表示的正数范围是4.94065645841247×10-324~1.79769313486232×10308,负数范围是-1.79769313486232×10308~-4.94065645841247×10-324。

单精度浮点数能够表示的正数范围是1.401298×10-45~3.402823×1038,负数范围是-3.402823×1038~-1.401298×10-45。

浮点数内部构造(IEEE标注)
浮点
双精度浮点数能够表示的数值范围要大于单精度浮点数。

符号部分 是指使用一个数据位来表示数值的符号。该数据位是1时表示负,为0时则表示“正或者0”。
尾数部分 用的是“将小数点前面的值固定为1的正则表达式”。
指数部分 用的则是“EXCESS系统表现”。
EXCESS系统表现
通过将指数部分表示范围的中间值设为0,使得负数不需要用符号来表示。
当指数部分是8位单精度浮点数时,最大值11111111=255的1/2,即01111111=127(小数部分舍弃)表示的是0,指数部分是11位双精度浮点数时,11111111111=2047的1/2,即01111111111=1023(小数部分舍弃)表示的是0。

计算机出错
计算机计算出错的原因之一是,采用浮点数来处理小数(另外,也有因“位溢出”而造成计算错误的情况)。

解决:
回避策略,即无视这些错误。
把小数转换成整数来计算。
5. 二进制数和十六进制数
通过使用十六进制数,二进制数的位数能够缩短至原来的1/4。

6. 数据类型

1字节长度的char
2字节长度的short
4字节长度的long
8字节(=64位)长度的double

7. 指针

指针也是一种变量,它所表示的不是数据的值,而是存储着数据的内存的地址。通过使用指针,就可以对任意指定地址的数据进行读写。

指针的数据类型表示一次可以读写的长度

8. ByteBuffer

三种实现方式:

第一种是堆内存储数据的HeapByteBuffer,将数据保存在JVM堆内存中;

第二种是堆外存储数据的DirectByteBuffer,采用堆外内存来存放数据的,因此在访问性能提升的同时带来了复杂的动态内存管理问题。;

第三种是文件映射(数据存储到文件中)的MappedByteBuffer。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值