博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有符号数和无符号数的区别
阅读量:6431 次
发布时间:2019-06-23

本文共 597 字,大约阅读时间需要 1 分钟。

  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.有符号数和无符号数的处理

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

转载地址:http://gotga.baihongyu.com/

你可能感兴趣的文章
Handling events in an MVVM WPF application
查看>>
在Ubuntu上下载、编译和安装Android最新源代码
查看>>
[转]JavaScriptSerializer中日期序列化
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
html5各种页面切换效果和模态对话框
查看>>
jQuery 判断多个 input file 都不能为空
查看>>
Codeforces Round #283 (Div. 2) C. Removing Columns 暴力
查看>>
Hadoop集群(第6期)_WordCount运行详解
查看>>
JAVA Calendar具体解释
查看>>
PHP 多个mysql连接的问题
查看>>
Windows Store App 主题动画
查看>>
wampserver下修改mysql root用户的登录密码
查看>>
[xampp]在Crunch Bang下安装xampp1.8.3
查看>>
jQuery操作DOM元素
查看>>
从关系型数据库到非关系型数据库
查看>>
Log4j配置全说明
查看>>
Android开发之控制Toast的开启与关闭
查看>>
微软职位内部推荐-Software Engineer II
查看>>
【Spring实战】—— 3 使用facotry-method创建单例Bean总结
查看>>
IOS 保存图片至相册
查看>>