补码及链表

96 阅读2分钟

「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。

补码: 原码

   也叫符号-绝对值码
   最高位0表示正   1表示负,其余二进制位是该数字的绝对值的二进制位
   
   原码简单易懂
   加减运算复杂
   存在加减乘除四种运算,增加了CPU的复杂度
   零的表示不唯一

反码

   反码运算不变,没在计算机中应用

移码

   移码表示数值平移n位,n称为移码量
   移码主要用于浮点数的阶码的存储

补码

   十进制转二进制
       正整数转二进制
           除二取余,直至商为零,余数倒叙排序
       负整数转二进制
           先求与该负数相对应的正整数的二进制代码,然后将
           所有位取反,末尾加一,不够位数时,左边补零
       零转二进制
           全是零
    二进制转十进制
       如果首位是零,则表明是正整数,按普通方法来求
       
       如果首位是一,则表明是负整数
           将所有位取反,末尾加1,所得数字就是该负数的绝对值
   #include<stdio.h>
   
   int main(void)
   {
       int i = -6;
       printf("%#X\n",i);
       
       int j = oxFFFF4;
       printf("%d\n",j);
       
       char ch = 0x66;
       printf("%d\n",ch);
       
       ch = 128;
       printf("%d\n",ch);
       
       return 0;
   }

int类型变量所能存储的最大正数用十六进制是:7FFFFFFF; int类型变量所能存储的绝对值最大的负整数用十六进制表示是:80000000;

链表 算法:

通俗定义:解体的方法和步骤

狭义定义:对存储数据的操作

广义定义:广义的算法也叫泛型,无论数据如何存储,对该数据的操作都是一样的。

我们可以至少通过两种结构来存储数据:数组和链表

数组

优点:

   存取速度快

缺点:

   需要一个连续的很大的内存
   插入和删除元素的效率很低

链表

专业术语

   头结点:头结点的数据类型和首节点的类型是一模一样的
           头结点是首节点前面的那个节点
           头结点并不存放有效数据
           设置头结点的目的是为了方便对链表的操作
   头指针:存放头结点地址的指针变量
           确定一个链表需要一个参数:头指针
   首结点:存放第一个有效数据的节点
   尾结点:存放最后一个有效数据的节点

优点:

   插入删除元素效率高
   不需要一个连续的很大的内存

缺点: 查找某个位置的元素效率低