博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道关于内存的C语言题
阅读量:2028 次
发布时间:2019-04-28

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

可先参考,相关的内存数据存储及运算的博文。

1、

2、


#include 
#include
int main(){ char a[1000]; int i; for(i=0; i<1000; i++) { a[i] = -1-i; } printf("%d",strlen(a)); return 0;}

猜,答案是多少?第一次做就错了,2333。。。。。

做这个题的基础你必须得先理解上面所讲。

答案 255

先掌握一个快速算负数在内存当中补码的技巧,先写出对应正数的二进制,然后最高位补1,然后从最低位开始遇到第一个1之前都不变,遇到之后,保留这个1以及符号位,这之间的数按位取反即可。

下面仔细分析一波:

-1在内存当中的存储为:0000 0001->1000 0001->1111 1111
-2在内存当中的存储为:0000 0010->1000 0010->1111 1110
……
-127对应存储为:0111 1111->1111 1111->1000 0001
-128对应存储为:1000 0000->1 1000 0000->1 1000 0000->(取八位)1000 0000
-129对应存储为:1000 0001->1 1000 0001->1 0111 1111->(取八位)0111 1111
……
-255对应存储为:1111 1111->1 1111 1111->1 0000 0001->(取八位)0000 0001
-256对应存储为:1 0000 0000->11 0000 0000->11 0000 0000->(取八位)0000 0000
-257对应存储为:1 0000 0001->11 0000 0001->10 1111 1111->(取八位)1111 1111 此处相当于又从-1开始了

strlen 函数是计算字符串长度的,并不包含字符串最后的‘\0’。

所以到a[255]=-256就完了,所以总长度为a[0]到a[254]共255

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

你可能感兴趣的文章
C++ Huffman树实现文件的压缩与解压
查看>>
C++ 异常
查看>>
02.基础设施即代码实践笔记
查看>>
02.HTML中使用JavaScript--JavaScript高级程序设计(笔记)
查看>>
05.看板方法——持续改进的文化
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
bash shell简述
查看>>
bash 重定向
查看>>
bash 命令执行环境
查看>>
bash 作业控制
查看>>
物理内存的管理
查看>>
高效能人士的七个习惯——由内而外全面造就自己
查看>>
为什么精英都是清单控(笔记)——工作清单
查看>>
怦然心动的人生整理魔法(笔记)——物品类别整理
查看>>
让人生发生戏剧性变化的整理魔法(笔记)
查看>>
按物品类别整理的心动收纳法(笔记)
查看>>
番茄工作图解——序(笔记)
查看>>
每天最重要的2小时——序(笔记)
查看>>
29.开源项目--git远程仓库的概念
查看>>
36.开源项目--git搭建本地Git服务器
查看>>