在冯诺依曼体系结构下.内存是非常重要的组成部分!

1.内存VS外存(硬盘,优盘,软盘等)

1.内存支持"随机访问能力": 也就是计算机访问内存上的某个地址的数据,花费时间开销都差不多,无论地址编号的大小,时间复杂度都为O(1);外存同样也支持随机访问能力,但是支持的程度远不及内存

2.内存量比较小,外存比较大

3.内存访问速度快.外存慢(速度快3-4个数量级,也就是几千倍)

4.内存的成本高,外存的低

5.掉电后,内存的数据丢失,外存的不会丢失(电脑睡眠未掉电,关机是掉电)

2.大小端字节序存储方式问题

int NNN = 9;

小端字节序: 数字的低位存储早内存的低地址上  (09 00 00 00 )  ----->简单记忆为: 小  小  小

大端字节序: 数字的低位存储在内存的高地址上  (00 00 00 09)

格列佛游记中小人国讨论的问题就是: 吃鸡蛋时候,是从大头开始磕,还是从小头开始磕鸡蛋. >> 这个问题类似于大小头磕鸡蛋的问题,大端字节序存储符合人的直觉,以后可以方便记忆:吃鸡蛋从大头开始磕

3.编写一个判断机器是否小端存储的函数:

int isLittleEnd(int* p) {

char* p2 = (char*)p;

if (*p2 == 0x44) {

return 1;

}

return 0;

}

4.原码,反码,补码这样设计的原因在于: 计算机硬件中实现减法器,乘法器,除法器成本高,只需要在软件中通过补码运算就能解决加减乘除

减法: 加负数

乘法: 多加n次自身

除法:多减n次自身

正数的原码,反码,补码是一样的!!!

负数的存在运算关系:  补码 =  反码 + 1 ;

原码  =  补码de反码 + 1;

反码  =  原码除符号位取反

5.常用的%d \ %u打印实质上是什么含义?

%d 表示的是: 打印一个有符号的 十进制的整数(int型32位)

要注意的一点是: char一个字节的变量, 当按照%d打印,会将char隐式转为int型打印,转换过程中,高位的三个字节填充符号位的值.

%u 表示的是: 打印一个无符号的 十进制的整数(int型32位)

同理.%u打印会把参数转为unsigned int类型,再进行打印

问题1: 以下代码的运行结果是:  -1 -1 255

char a = -1;

signed char b = -1;

unsigned char c = -1;

printf( "a = %d, b = %d, c = %d", a, b, c);

char 型8位 -1 的补码是 1111 1111

int型32位   -1 的补码是 1111 1111 1111 1111 1111 1111 1111 1111

高位补的是符号位上的值,这是为了防止出现这样的转化过程中数据错误.

signed char 与 char 没有区别

unsigned char 在进行 %d打印时

1111 1111 高位补0(unsigned char 无符号位), 当做正数处理,补位按0补位.

则补位后结果是 0000 0000 0000 0000 0000 0000 1111 1111 ------> 255十进制数

结论: unsigned 类型变量比较坑, 容易在隐式转换等处发生问题, 能不用就不用unsigned.

问题2: 以下代码的运行结果是:  4,294,967,168

char a = -128;

printf("%u" , a);

思路: 把(char) a ---.> int----> unsigned int型打印

高位填充符号位 1000 0000

char ---> int   \||/

1111 1111 1111 1111 1111 1111 1000 0000

int  ---> unsigned int   \||/

1111 1111 1111 1111 1111 1111 1000 0000   ||此时最高位不再是符号位, 不再表示负数,下面的数字就被理解为一个很大的正数4,294,967,168

问题3:以下代码的运行结果是:

char a = 128; // 128溢出 char 的范围是 -128 ---> +127

printf("%u \n", a);

128内存中二进制表示的是 0000 0000 0000 0000 0000 0000 1000 0000

char a = 128;发生截断,导致唯一的1变成了符号位,此时a的值本质为 -128;

\||/ 隐式转换为int

\||/ 转换为unsigned int 变成了很大的正数(回到问题2的过程中了)

c语言中Oo是什么进制整数字,C语言中的大小端存储及原码补码反码的运算关系 %d %u...相关推荐

  1. 16位二进制补码 c语言,2,16进制原码补码反码问题

    1. 在计算机里,通常用数字后面紧跟一个英文字母来表示该数的数字, 十进制一般用D,二进制用B,八进制用O,十六进用H来表示, 2. 首先,十进制数转换成二进制,除2取余,按箭头方向写,自上而下写出来 ...

  2. c语言中0x12是什么进制,C语言中进制知识汇总

    1.什么是进制 进制是一种计数的方式,常用的有二进制.八进制.十进制.十六进制.任何数据在计算机内存中都是以二进制的形式存放的. 我对进制的个人理解,二进制数是以2为计算单元,满2进1位的数:八进制数 ...

  3. c语言中ff用16进制怎么表示什么,0xff(十六进制0xff表示什么)

    0xff 从数值上看,0xff表示一个十六进制数FF,也就是十进制的255.从电平高低来看,比如读取P1口得到0xFF,表示P1口8个引脚都是高电平. 以0x开始的数据表示16进制,0xff换成十进制 ...

  4. 进制转换,原码补码反码--学习笔记--03

    一. 进制转换 1.其他进制到十进制的转换 比如: 十进制 十进制 123=100+20+3 =1* 10^2 + 2 *10^1 +3 * 10^0 =100+20+3 =123 八进制 十进制 1 ...

  5. c语言中return 0的作用,return 0在c语言中代表着什么?

    return 0在c语言中代表着什么? 发布时间:2020-03-26 17:05:39 来源:亿速云 阅读:601 作者:小新 return 0在c语言中代表着什么?可能大家对c语言并不陌生,或者从 ...

  6. 在c语言中log函数的作用,C++_在C语言中使用对数函数的方法,C语言log()函数:返回以e为底的 - phpStudy...

    在C语言中使用对数函数的方法 C语言log()函数:返回以e为底的对数值头文件: #include log() 函数返回以 e 为底的对数值,其原型为: double log (double x); ...

  7. 在c语言中1和0的意思,!1在c语言中是什么意思?

    01 !1 是一个逻辑非表达式.感叹号!是C语言中的逻辑非运算符.C语言中的逻辑运算值是用0/1来代替的.0为假,1为真.非0值也为1.所以,!1 是一个逻辑非表达式. C语言是一门面向过程的.抽象化 ...

  8. c语言中a的作用是什么意思,在c语言中* a是什么意思

    以上楼只有 dark___templar 稍微靠谱一点. %*作为运算符不能连着用.当然如果是 int a=4,b=2,*p=&b; if(a%*b==0); 之类的用法那就当我没说(不过基本 ...

  9. c语言中像y的字符是什么意思,C语言中字符型(char)的简单使用

    C语言中字符型(char)的简单使用 刚接触C语言不久,在这记录下自己的一些学习心得.今天主要是在敲代码时遇到了一个小问题,如图: 应该是个比较简单的编程题.在我的想法中,应该使用循环逐个读入由A至Z ...

  10. C语言中八进制和16进制怎么表示,原码,反码及补码,C语言按位取反运算符~

    借鉴被人的 C语言中8进制和16进制怎么表示 C语言本身支持的三种输入是: 1. 十进制.比如20,457: 2. 十六进制,以0x开头.比如0x7a: 3. 八进制,以0开头.比如05,0237 所 ...

最新文章

  1. JAVA用递归方法判断某个字串是否是回文
  2. 南京大学教授施斌及其团队—— 光纤变“神经” 大地能感知
  3. nginx上传文件大小
  4. leetcode 263. 丑数(Java版)
  5. 行内元素 块级元素之间的嵌套
  6. 陈式心意混元太极拳功要
  7. python智慧树判断题_智慧树_大数据分析的python基础_判断题答案
  8. 云服务器部署网易云音乐API(node.js)
  9. mac电脑如何配置mysql环境变量
  10. .NET周报【11月第1期 2022-11-07】
  11. Web前端 | HTML | 基础
  12. 软件设计模式从何而来?------“抄袭来的” 设计模式
  13. 【JavaEE进阶系列 | 从小白到工程师】基本类型包装类的使用,装箱以及拆箱与parseInt方法
  14. springboot集成bboss操作elasticsearch索引,类型,文档(单集群)
  15. bash运行.sh文件出现 command not found: XX某变量名
  16. Windows XP 下安装SQL SERVER 2005问题汇总
  17. Megacli常用命令汇总
  18. 铁道部新客票系统设计(三)
  19. Solidity映射02
  20. 记录遇到的问题之---把16进制的颜色rgb转换成‘#’形式

热门文章

  1. web of science上查找相关会议和期刊的论文
  2. TCP and UDP
  3. Atitit hibernste5 注解方式开发总结 目录 1. 映入hb5的jar 建立项目 1 1.1. 建表tab1 ,这里使用了sqlite数据库 1 1.2. 建立映射实体类tab1
  4. atitit 每季度日程表 每季度流程 v3 qaf.docx Ver history V2 add diary cyar data 3 cate V3 fix detail 3cate ,
  5. Atitit 图像处理 调用opencv 通过java  api   attilax总结
  6. Atitit 发帖机实现(2)---usrQBN2243 文本解析到对象协议规范
  7. paip.java gui swt/jface 最佳实践
  8. paip.提升用户体验----gcc c++ 编译速度提升by预编译头技术 .doc
  9. Rust 碎碎念:【译】Arc 在 Rust 中是如何工作的
  10. 转: Rust中的Pin详解 【Rust语言中文社区】