首页 > 系统相关 >整形在内存中存储的一些典型题目

整形在内存中存储的一些典型题目

时间:2023-02-25 15:01:13浏览次数:37  
标签:11111111 10000000 题目 00000000 补码 char 内存 整形 原码

1.第一题

整形在内存中存储的一些典型题目_反码

首先,-1是个整数,所以我们先写出它的二进制的原码、反码、补码:

原码:10000000 00000000 00000000 00000001

反码:11111111 11111111 11111111 11111110

补码:11111111 11111111 11111111 11111111

接着,我们看要把它放到 char 类型的 a 里面,把4个字节放进一个字节,要发生截断,所以将后8位放入 a 中;

char a : 11111111 ;b 和 c 也是一样,

接着我们以整型打印,要发生整形提升:整型提升是根据你自身的符号位提升,所以 a 和 b 提升成:

补码:11111111 11111111 11111111 11111111 (vs中 ,char 和signed char 本质相同)

接着再-1再取反得到原码:

原码:10000000 00000000 00000000 00000001

最后打印出来的就是-1;

对于 c 来说,没有符号位这个说法,因为是unsigned char ,所以直接补0;c 提升成:

00000000 00000000 00000000 11111111

打印整形的时候,因为最高位是0,所以原码=反码=补码,所以打印 255;

整形在内存中存储的一些典型题目_补码_02



2.第二题

整形在内存中存储的一些典型题目_反码_03

首先,看到-128是整数,所以写出它的二进制:

原码:10000000 00000000 00000000 10000000

反码:11111111 11111111 11111111 01111111

补码:11111111 11111111 11111111 10000000

再截断:10000000;要求以无符号整型的形式打印,所以要整型提升:

补码:11111111 11111111 11111111 100000000

又因为正数的原码、反码、补码都相同,所以结果就是 4294967168;

整形在内存中存储的一些典型题目_反码_04

整形在内存中存储的一些典型题目_补码_05


3.第三题

整形在内存中存储的一些典型题目_反码_06

首先我们将128的原反补码写出来(正数的原反补相同):

00000000 00000000 00000000 100000000

存到char 类型中去再截断:10000000

因为打印无符号整型,所以整型提升:

11111111 11111111 11111111 10000000

因为无符号,所以直接看作原码,得到:4294967168;

整形在内存中存储的一些典型题目_补码_07

整形在内存中存储的一些典型题目_整型_08



4.第四题

整形在内存中存储的一些典型题目_反码_09

写出 i 和 j 的原码、反码、补码:

i :         

10000000 00000000 00000000 00010100

11111111 11111111 11111111 11101011

11111111 11111111 11111111 11101100

j :

00000000 00000000 00000000 00001010

i+j:补码相加

11111111 11111111 11111111 11110110

再-1:

11111111 11111111 11111111 11110101

再取反:

10000000 00000000 00000000 00001010

也就是:-10

整形在内存中存储的一些典型题目_整型_10



5.第五题

整形在内存中存储的一些典型题目_反码_11

i 是无符号整型,可以说 i>=0 恒成立:

9:00000000 00000000 00000000 00001001

8:00000000 00000000 00000000 00001000

7:00000000 00000000 00000000 00000111

……

1:00000000 00000000 00000000 00000001

0:00000000 00000000 00000000 00000000

4294967295:11111111 11111111 11111111 11111111

4294967294:11111111 11111111 11111111 11111110

……

0:00000000 00000000 00000000 00000000

4294967295:11111111 11111111 11111111 11111111

……(死循环)

整形在内存中存储的一些典型题目_整型_12




6.第六题

整形在内存中存储的一些典型题目_补码_13

( char 属于整数类型,是可以存数字的,但是负数不会被解释成ASCII码,这里为了方便一点正数就不写ASCII码了)

i=0 ; a[0]=-1-0=-1 ; 原码:10000001

i=1 ; a[1]=-1-1=-2 ; 原码:10000010

i=2 ;a[2]=-1-2=-3; 原码:10000011

……

i=127;a[127]=-1-127=-128 ; 原码:10000000

i=128;a[128]=-1-128=127 ;  原码:01111111

i=129;a[129]=-1-129=126; 原码:01111110

……

i=253;a[253]=-1-253=2 ; 原码:00000010

i=254;a[254]=-1-254=1 ; 原码:00000001

i=255 ; a[255]=-1-255=0 ; 原码:00000000

因为字符串遇到'\0'截止,所以i=254,所以 strlen(a) =255 ;

整形在内存中存储的一些典型题目_补码_14

如果我变式:a[i]=-2-i ; 结果就是254;

因为char a[1000] 就是 -1-128127~0的循环,直到遇到'\0'结束;



7.第七题

整形在内存中存储的一些典型题目_整型_15

首先看到 i 的类型:unsigned char ; 可以知道 i 的范围在0到255之间;

再看到for循环的判断条件,发现条件恒成立 : 死循环打印hello world ;

整形在内存中存储的一些典型题目_整型_16


通过这些题目,希望大家可以更加了解数据的存储的知识点,修炼好自己的内功。

标签:11111111,10000000,题目,00000000,补码,char,内存,整形,原码
From: https://blog.51cto.com/u_15928027/6085460

相关文章

  • 32位系统支持多大内存?
    32位系统支持多大内存首先说明几个概念:32操作系统的地址总线为32,最大可寻址个地址;内存中一个存储单元为一个字节,即1byte或者8bit;1Gb=Mb=Kb=byte=bit;现在再整理......
  • 第五章 内存和磁盘的亲密关系
    第五章观后感想:    内存和磁盘是计算机中主要的存储部件,磁盘中存储的程序,必须要加载到内存中才能运行,在磁盘中保存的原始程序是无法直接运行的。    磁......
  • 第四章 熟练使用有棱有角的内存
    第四章观后感想:    第四章主要讲内存,通常说的内存是指计算机的主存储器,简称主存,主存通过控制芯片等与CPU相连,主要负责存储指令和数据。      内存......
  • Windows黑客编程之内存直接加载运行
    描述编写一款PE加载器,用来将dll和exe文件加载到内存中并运行假设程序需要动态调用dll,内存加载运行技术可以把这些dll作为资源插入自己的程序中,直接在内存中运行即可,不必......
  • THUPC2019 令人难以忘记的题目名称 题解
    首先感性感觉这个东西是比较有循环节的,但这是后话。最后几步一定是差分相同->每个数相同->全为0。不平凡地猜想差分\(k\)次全\(0\)等价于可以\(k\)步胜利。假设......
  • 计组——大端方式和小端方式以及边界对齐相关题目
    大端方式和小端方式相关题目1.大端方式和小端方式2.边界对齐3.真题嗅探 1.大端方式和小端方式大端方式:现代人正常的阅读顺序,从左向右小端方式:古代人的阅读顺序(联......
  • Android 分区和内存监控
    Android分区和内存监控Andorid之所以是分区,是因为各自有对应的功能和用途的考量,可以进行单独读写和格式化。Android设备包含两类分区:一类是启动分区,对启动过程至关重......
  • 对象的内存图
    一个对象的内存图2个对象的内存图数组的内存图java是一门面向对象语言,并且java中万物皆对象,可以说对象是java代码的基本单元,所以说对于对象的内存分析显得很重要一个......
  • C++的内存模型
    C++的内存包含4个大区,它们分别是代码区、全局区、栈区和堆区。以下将对它们的分区进行进一步的阐述。代码区:对于一段代码,首先要经过编译之后生成可执行文件才能执行,在Wi......
  • jvm-内存调优
    jvm-内存调优1.jvm内置命令jps列出正在运行的jvm虚拟机进程,并显示虚拟机执行朱磊名称以及这些进程的本地虚拟机唯一ID-q:仅输出进程id-m:输出main方法的参数-......