博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言进阶剖析第二课--有符号和无符号
阅读量:7086 次
发布时间:2019-06-28

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

①计算机中的符号位

数据类型的最高位用于标识数据的符号

  -最高位为1,表明这个数为负数

  -最高位为0,表明这个数为正数

在计算机内部用补码表示有符号数

正数的补码为正数本身;

负数的补码为负数的绝对值各位取反再加1;

 

在计算机内部用原码来表示无符号数

  -无符号默认为正数

  -无符号数没有符号位

对于固定长度的无符号数

 MAX_VALUE + 1 =  MIN_VALUE

MIN_VALUE - 1 = MAX_VALUE

如果无符号数和有符号数相加,有符号数会转成无符号数,并且如果有符号数是负数,那么这个数将会是一个很大的数,并且计算结果是一个无符号数。

 

 

 

计算机中的符号位

数据类型的最高位用于标识数据的符号

  -最高位为1,表明这个数为负数

  -最高位为0,表明这个数为正数

int sign = 0;

char i = -5;

short j = 5;

int k = -1;

 

sign = (i & 0x80);  //sign不等于0

sign = (j & 0x8000);  //sign等于0

sign = (k & 0x80000000);  //sign不等于0

 

在计算机内部用补码表示有符号数

正数的补码为正数本身;

负数的补码为负数的绝对值各位取反再加1;

 

在计算机内部用原码来表示无符号数

  -无符号默认为正数

  -无符号数没有符号位

对于固定长度的无符号数

 MAX_VALUE + 1 =  MIN_VALUE

MIN_VALUE - 1 = MAX_VALUE

 

C语言变量默认为有符号类型

unsigned关键字声明变量为无符号类型

 

整数类型能用unsigned来声明,但是浮点数不能用unsigned声明

 

相互之间的转换:

如果无符号数和有符号数相加,有符号数会转成无符号数,并且如果有符号数是负数,那么这个数将会是一个很大的数,并且计算结果是一个无符号数。

示例程序1:

#include 
int main(){ unsigned int i = 5; int j = -10; if( (i + j) > 0 ) { printf("i + j > 0\n"); } else { printf("i + j <= 0\n"); } return 0;}

运行结果:

 

实例程序2:

#include
int main(){ unsigned int i = 0; for(i>9; i>=0; i--) { printf("%u\n",i); }   return 0; }

运行结果:

 

转载于:https://www.cnblogs.com/yr-linux/p/5467604.html

你可能感兴趣的文章
SG 复习全部 (全部SG 总览)
查看>>
学习动态性能表(16)--v$rowcache
查看>>
c++ 11 thread 初试
查看>>
项目PMO工作
查看>>
eclipse 执行MapReduce程序错误异常汇总(解决Map not fount)
查看>>
OpenCV实践之路——Python的安装和使用
查看>>
iOS上的http请求:get、post以及同步、异步
查看>>
【hdu 6172】Array Challenge(数列、找规律)
查看>>
关于LINUX权限-bash: ./startup.sh: Permission denied
查看>>
win7 怎么设置开机直接进入桌面? netplwiz 命令
查看>>
安卓平台下ARM Mali OpenCL编程-GPU信息检测(转)
查看>>
数学之美读书笔记一如何度量查询关键字和网页的相关性(逆文本频率指数)...
查看>>
MySQL慢查询日志总结
查看>>
Ubuntu Apache配置及开启mod_rewrite模块
查看>>
HTML5 FormData 方法介绍以及实现文件上传
查看>>
关闭使用ShellExecute打开的进程!!!!!
查看>>
x为正变数,求y=x^3/(x^4+4)的最大值
查看>>
VC++为你的程序增加内存泄露检测
查看>>
链接服务器 "(null)" 的 OLE DB 访问接口 "SQLNCLI11" 指示该对象没有列,或当前用户没有访问该对象的权限。...
查看>>
html5学习笔记3——高级特性
查看>>