深入理解signed、unsigned 关键字

答:

1.-0 和+0 在内存里面分别怎么存储:

计算机里表示数字用的都是补码不是原码。想知道补码是啥可以去百度一下。零在计算机里就是0,不存在正负一说。0和正数的补码都等于原码,也就是平时说的2进制数。负数的补码是符号位置一的情况下,对原码求反,再加一得到的。经过这样的变换,负数和正数运算的时候可以直接做加法,不需要根据符号位决定是做加法还是做减法。减法也可以改变有符号数的符号位,然后直接做加法。这样CPU就不需要专门做减法的电路了。

十进制数          原码            反码         补码
  +0         00000000     00000000   00000000
  -0         10000000     11111111   00000000

2.就以类似的例子来描述:
unsigned int a = 6;
int b = -20;
i+j=?
解释:
unsigned int类型的数据与int类型的数据相运算后,自动转化为unsigned int类型。因此a+b的值不是-14,而是一个unsigned int类型的数4294967382.
1).先说下这个数字怎么来的:
在内存中,负数的存储方式是正数的反码+1.
6:0x00000006
20:0x00000014,补码:0xfffffffeb
-20:0xfffffffec
>>> 0xffffffec+0x06
4294967282L
2).%d,%u输出结果不一样?
int 与unsigned存储形式一样,都是补码形式,区别在于输出的格式控制符,当以%d输出,会认为是有符号数,这样就把最高位的1当成了符号位,也就是负数(0是正数),当以%u输出,会认为是无符号数,这样它会将所有16位的组成都看成是数本身的组成,而没有符号位一说,所以输出结果是由16个1组成的二进制数。

这要看你的i+j的输出格式的,如果是%u 输出的话 那肯定是没有负数的。应该是一个很大的正数。但是以%d输出的话就会转成int 类型了  就会是-14了。

3.unsigned i = 9; for(i=9; i>0; i--) { printf("%u\n", i); } 为什么会出错。

因为:无符号数永远没有负数,恒大于等于0,死循环,。

深入理解signed、unsigned 关键字相关推荐

  1. 深入理解C语言关键字用法

    本篇文章总结了各个关键字的用法.特殊用法.对C语言的关键字进行深入的理解. 一.C语言标准定义的关键字(共32个)及其意义 关键字 意义 auto 声明自动变量,缺省时编译器一般默认为auto int ...

  2. 单片机中code,sbit,unsigned关键字的作用(流水灯案列说明)

    首先,写上一端单片机C语言流水灯点亮主函数 #include "reg52.h"unsigned char code table[]={0xfe,0xfd,0xfb,0xf7,0x ...

  3. UNSIGNED关键字的解释和用法

    UNSIGNED关键字 UNSIGNED表示无符号数,当定义一个数值型字段中添加该约束,表示该字段的数据没有符号,可以变相增加长度 举个例子,比如 tinyInt ,微整型数据类型,占一个字节,也就是 ...

  4. C++知识整理用----unsigned关键字的理解

    unsigned和signed关键字的理解 unsigned 该关键字表示为该类型无符号. 例如 int 类型的取值 为4个字节 共32 位 ,如果有符号的范围为 -2 ^ 31 ~ 2^31 -1 ...

  5. C语言 unsigned signed void 关键字和 类型修饰符

    有无符号位置 signed 和unsigned 其实就是很简单的逻辑:存储数据的空间的最高位 是符号(+ -号什么的)还是数据 signed 表示数据的最高位是符号位 一般用于保存数字类信息 一般我们 ...

  6. signed和unsigned关键字修饰的整形在内存中的存储

    我们知道创建一个变量是要在内存中开辟一个空间,而空间的大小是根据修饰的不同类型的变量决定的.那么数据在所开辟的内存到底是如何储存的呢例如:int a=10; 再讲数据在内存中如何储存前,我们得先了解源 ...

  7. 深入理解并发的关键字-volatile

    volatile是Java提供的一种轻量级的同步机制.Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为 ...

  8. 深入理解并发的关键字-synchronized

    我们已经了解了Java内存模型的一些知识,并且已经知道出现线程安全的主要问题来源于JMM的设计,主要集中在主内存和线程的工作内存而导致的内存可见性问题,以及重排序导致的问题,进一步知道了happens ...

  9. 请编写一个c程序确定signed,unsigned的char,short,int和long变量取值范围

    way1: 通过打印标准的头文件中的相应的值来完成 符号常量 表示 CHAR_BIT char 的位数 CHAR_MAX char 的最大值 CHAR_MIN char 的最小值 SCHAR_MAX ...

最新文章

  1. 周末思考:浅谈如何成为技术一号位?
  2. Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析
  3. 笔记-信息系统开发基础-架构设计-软件架构风格
  4. Scala基础知识笔记2
  5. MS SQL 导入导出 提示 未在本地计算机上注册“Microsoft.ACE.Oledb.12.0”提供程序。(System.Data)...
  6. rxjs里使用from operator从一个generator里生成Observable
  7. CodeForces - 1141ESuperhero Battle简单模拟
  8. 上海云栖:金融政企行业的CDN最佳实践
  9. CPU vector operations
  10. TIOBE 5 月榜单:时隔五年,C 语言重返第一!
  11. vue文件上传 vue-simple-upload的使用方法
  12. UNIQLO 11月销售额逆市上涨7.9%
  13. 强化学习之DQN(附莫烦代码)
  14. 一场面试过后—移动前端开发
  15. MySQL更新数据语句
  16. 容齐的身世_浅析容齐
  17. 解决微信图片不可引用的问题
  18. 深度学习(9):FastFCN论文翻译与学习
  19. 4核服务器型号,服务器厂商、型号、参数。
  20. 小软件公司的生存之道

热门文章

  1. CSS3 flexbox 布局 ---- flex项目属性介绍
  2. 关于 Capella 需要纠正的语音
  3. Linux虚拟内存与线性地址翻译
  4. CSS中用 opacity、visibility、display 属性将 元素隐藏 的 对比分析
  5. Java提高——多线程(二)join、sleep、yield
  6. 浅谈inode和block与磁盘性能的初级优化
  7. centos 7挂载windows共享目录
  8. ExtJS4.x 开发环境搭建
  9. Nginx之rewrite:域名与二级目录之间的跳转
  10. 伍哥原创之安装nginx,mysql,php-fpm,redis