hello算法1 数据结构

1.正数的原码、反码、补码相同,负数的反码是原码除符号位的所有位取反;负数的补码是反码加1。

2.为什么使用反码? 因为在直接用负数的原码计算会得到错误答案(如-1+2),因此先将原码转变为反码再进行计算,最后再转变为原码就能得到正确答案。

3.引入补码是为了消除正0(00000000)和负0(10000000)的区别,
在这里插入图片描述
将负零转换为补码,那么后八位就是八个0,与正零一样,消除了0的歧义。

4.为什么byte的取值范围是[-128, 127],为什么多出-128,因为正常来说所有数都有原码、补码、反码,但是1000 0000经计算原码是0000 0000,但是按道理说0000 0000的补码应该是本身,所以产生了矛盾,因此规定1000 0000 为特殊的补码(-128)。

5.计算机的内部硬件主要是基于加法运算设计的,因为加法运算快且结构简单。

6.为什么int和float都是4个字节,但是int和float所表示的大小不同,因为float采用了不同的表示方式,如下图是一个32位的float数的表示方式:
在这里插入图片描述
在这里插入图片描述

这32位被分为1个符号位、8个指数位和23个分数位,计算公式如上图右下角。

7.第一次知道,ASCII码是使用一个字节的低七位表示字符的,所以最多只能表示128个不同的字符。
GBK — 汉字。
Unicode—统一码,所有字符等长编码。
UTF-8,Unicode的一种,可变长度的编码。一字节同ASCII码,n字节(n>1),将首个字节的高n位设置为1,第n+1位设置为0,从第二个字节开始,将每个字节的高两位设置为10,其余填充Unicode码点。
UTF-16,等长字节2或4
UTF-32,等长4字节。

8.记一个好玩的,python中的str使用Unicode编码,存储的字符长度取决于字符串中最大的Unicode码点,如果字符串全部都是ASCII字符,每个字符占用1字节,如果字符超过了ASCII,但全部在基本多语言平面(BMP)内,则每个字符占用2字节,超过BMP用四字节。

9.等长编码,如固定2字节编码,很容易计算出对应标签数i的位置,如2*(i-1),所以复杂度是O(1),而非等长则需要遍历了,所以复杂度是O(n)。

10.逻辑结构:线性和非线性; 物理结构:数组和链表。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rookiexxj01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值