• 有符号数和无符号数的区别


      C语言允许我们定义有符号数和无符号数,例如一个字节的存储空间,我们可以定义成unsigned char,也可以定义成signedchar,但是你知道它们的区别吗?你知道它们是怎样被存储,又怎样被区分处理吗?

    1.有符号数和无符号数的存储

      对于一个字节的存储单元unsigned char的范围为(0 - 255),它的存储方式就是把一个十进制的数转化为二进制的数保存起来,没什么说的。重点在于signed char的处理。

      对于一个字节的存储单元signed char的范围为(-128 - 127)。它的存储方式是“编译器以补码的形式存储”。举个例子,一个字节的存储空间存放了一个数据84h,有符号数存储为-124。

      我们再看这样两个定义“ unsigned char a=132”和“signed char  b=-124”。在调试模式下,可以看到a、b内存单元中的数据都是84h。

    结论:利用C语言定义的有符号数和无符号数,计算机本身是不能区分的,它所能做的就是存放一个二进制数据,如此而已。

    2.有符号数和无符号数的处理

      区分这些数据类型的工作是交给了编译器来完成;曾经那个编译器还未诞生的年代,这个工作就交给人来完成(猜想)。至于有符号数和无符号数的计算问题,因为指令是不会区分有符号或者无符号,所以这是需要编译器来通过编译出一系列指令完成有符号计算或者无符号计算。

  • 相关阅读:
    浅谈JS的数组遍历方法
    浅谈JavaScript函数重载
    随机数的组合问题(JavaScript描述)
    如何使用百度bae部署web项目
    阿里前端笔试总结
    有趣的JavaScript隐式类型转换
    CSS如何实现”右部宽度固定,左部自适应“的布局
    Nor Flash的理论性能
    python argparse:命令行参数解析详解
    rwcheck:为嵌入式设备设计的读写压测工具
  • 原文地址:https://www.cnblogs.com/amanlikethis/p/3086303.html
Copyright © 2020-2023  润新知