音无结弦之时,天使跃动之心。立于浮华之世,奏响天籁之音。.|

次林梦叶

园龄:3年3个月粉丝:21关注:2

程序数据的表示

开头王炸:

解决和解释上述问题是本次博客的主要目的

 

《从机器语言到高级语言》 

  可以看到:

  机器语言极其不灵活,一旦要在事后做出一些改变就会导致重头再来

 

 汇编语言的到来确实更好一点

但是我们需要将汇编语言翻译成机器语言了

 

 

 

 

《计算机体系层次》

 

 

 

 《模运算系统和补码表示》

  从其中我们可以得到一下几个规律:

  1.对于负数的补码 = mod+负数 = 各个位取反,最后+1

  2.对于正数的补码 = -(正数-mod)

          = 正数本身

  

 

 

 比如如何知道-8的补码是1000?

  2^4-1000=1000得来

其余同理

 

 

现在基本上所有带符号整数都用补码表示

如果一个int 的数据已经到了其可以表示的最大正数 2^31-1

如果这个时候再对其+1

则根据上面的圆盘图可以知道,其应该变成int 可以表示的最大负数 -2^31

 

 

《无符号数与带符号数》

 在c语言中如图

  红色渲染的地方都是无符号整数类型

  其余为有符号整数类型

注意指针由于其保存的是一个地址,所以其也是无符号整数类型

 

 即无符号整数比有符号整数表示的范围更大

  像double与int运算时,编译器会自动将int转化为double

  同理当无符号整数与有符号整数进行比较

  最后是按照无符号整数的规则进行比较

 

 

 

 以-1<0 与 -1<0 U进行说明

  -1<0 两个都是带符号数,比较时

    首先将-1 和 0转化为二进制数(补码表示的)

  -1 为 11....1111

  0 为 000....00

  这里按照带符号数比较时,因为最高位为符号位

  所以容易知道-1<0

 

但是 -1 < 0U

  这里 -1是带符号数,0是无符号数

  首先将数据转化为二进制数

  -1 为 11....111

  0 为 00...00

  比较规则是无符号整数比较

  则判断-1>0

再看这个:

   2147483647 = 2^31 -1

   即为0111......1

 
 -2147483647-1 = -2^31

  在补码下为 100....000

 

 这里按照无符号整数进行比较,认为 

 2147483647U < -2147483647-1

 

 为何

  因为int (32位 )最大表示正整数为2^31-1 = 2147483647

  这里2147483648 = 2^31

   想象一下上面的圆盘,最大数+1后变最小数

   在补码表示下 2147483648 为 1000....0000 

   而在int 下 1000....0000  表示 -2147483648 

 

《非数值数据的表示》

非数值数据大致可以分为

  逻辑数据的编码

  西文字符的编码

  汉字的编码

  多媒体数据的编码

 所谓靠指令来识别即看指令数 如add等运算操作,还是>> 等逻辑操作

如果是运算操作,则数据被当成数值数据运算

 

 输入码就是如我们经常使用的拼音等

内码是系统中对汉字进行二进制转化的表(如同西文字符的Ascii码表)

 

本文作者:次林梦叶

本文链接:https://www.cnblogs.com/cilinmengye/p/17337950.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   次林梦叶  阅读(72)  评论(0编辑  收藏  举报
历史上的今天:
2022-04-20 二分,但是十分不明显,但是对于数很大,存储空间很大,用二分找数值确实很快
2022-04-20 树的dfs遍历----但是输入很特殊,单单靠输入形成不了树
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起