首页 > 其他分享 >char 的整数存储解释

char 的整数存储解释

时间:2024-09-15 11:24:33浏览次数:10  
标签:练习题 存储 符号 补码 整数 char include 255

c3daa479c3bf48ad88dc28d5ff748f7d.png

目录

1.原因讲解

1.有符号类型的char

2.无符号类型的char(0-255)

 练习题1.

 练习题2.

练习题3.


小心!VS2022不可直接接触,否则!没这个必要,方源面色淡然一把抓住!顷刻炼化! 


1.原因讲解

1.有符号类型的char

我们知道char类型只有一个字节,一个字节是8bit位

在计算机中,计算机只会识别二进制,并以补码的形式存储在内存中

8bit位的二进制补码可以列举出很多种情况,如图:

5637baa92b3947aea0c86d82166cc5a8.jpeg

8bit位的有符号二进制只能列举出这么多情况,从0开始,二进制不断地加1,最终完成一个闭环,127的补码加1后为-128,-1的补码加1后又回到0,如此循环,所以char类型是127—— -128


2.无符号类型的char(0-255)

无符号类型的char是0-255,是因为无符号类型中,每一位都算有效位,没有符号位的存在,所以补码的每一位都算有效位,如图:

1ed465500f6549fca4097bcfc686f095.jpeg

因此,无符号类型的char的范围是0-255,从0不断地加1,最终加到255

补码达到255时,再加1就会回到0,实现闭环循环


 练习题1.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{	
	char a[1000];
	int i;
	for (int i = 0; i < 1000; i++) {
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));
}	

 许多人会认为,a[i]会储存-1到-1000,但真的如此吗?

如果是这样想的话,那就出错误了

因为整数在有符号中储存只能存储127到-128的整数,那存储的是什么,打印的又是什么呢?

代码分析及结果:

详细讲解如下图:

1ec25fbf4cda435ba772767412e3dd7d.png


 练习题2.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{
	unsigned char i = 0;

	for (i = 0; i <= 255; i++) {
		printf("hello world\n");
	}
}	

  这次打印出来的结果是什么呢?难道是打印256次 "hello world" 吗?

恭喜你又错了,正确答案是死循环打印 "hello world"

详解如下图:

545d5f7e5ad4451091ae3550dc30acdb.png


练习题3.

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>
#include<string.h>
int main()
{
	unsigned int i;
	
	for (i = 9; i >= 0; i--) {
		printf("%u\n", i);
	}
}	

  详细讲解如下图:

2a29e47eb72e4183a6579d604fc7a046.png

8fdd48caf53e46a897fd8a5554dbb454.png

标签:练习题,存储,符号,补码,整数,char,include,255
From: https://blog.csdn.net/2301_80349538/article/details/142030088

相关文章

  • String存储原理
    1.是什么        在Java中,String是一种特殊的类,它是不可变的并且存储在堆内存中。为了理解String的存储原理,我们需要分解几个关键概念:不可变性、堆内存、字符串常量池和垃圾回收机制。下面我将详细解释这些概念并举例说明。不可变性(Immutability)    Stri......
  • 新电脑安装和配置pytorch、anaconda、CUDA、cuDNN、pycharm、OpenCV的过程记录
    显卡驱动和CUDA一、升级显卡驱动到官方最新版    1、打开英伟达官网,输入显卡芯片型号,手动搜索并下载显卡驱动。 NVIDIA官方驱动 ​    2、下载完成后安装驱动。 二、确认显卡支持的最高CUDA版本    1、键盘"win+R",调出运行输入cmd后点”......
  • PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符
    文章目录PyCharm软件的使用1.修改背景颜色和字体大小1.1修改背景颜色1.2修改字体大小2.常用的快捷键3.常见的运算符3.1算术运算符3.2赋值运算符3.3比较运算符3.4逻辑运算符PyCharm软件的使用1.修改背景颜色和字体大小1.1修改背景颜色1.2修改字体大......
  • 2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数
    2024-09-14:用go语言,给定一个正整数数组nums,定义一个加密函数encrypt(x),其将一个整数x的每一位数字都替换为x中的最大数字,然后返回加密后的数字。例如,encrypt(523)会返回555,encrypt(213)会返回333。现在需要计算数组中所有元素加密后的和,然后返回这个和。输入:nums=[10,2......
  • Kubernetes怎么进行NFS动态存储迁移
    环境查看系统环境#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)#uname-aLinuxCentOS7K8SMaster010633.10.0-1160.108.1.el7.x86_64#1SMPThuJan2516:17:31UTC2024x86_64x86_64x86_64GNU/Linux软件环境#kubectlversionClientVersion:ver......
  • Python存储与读写二进制文件
    本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存......
  • 监控存储可以用来备份服务器数据吗
    监控存储通常是为了捕获和存储监控数据而设计的,例如系统日志、性能指标、网络流量等信息。它并不是为了备份服务器数据而设计的。以下是关于监控存储与数据备份之间的区别:监控存储:目的:监控存储的目的是为了持续跟踪和记录系统的状态和性能,以便于实时监控和分析。数据类型:监控存储通......
  • 避免 PyCharm 将该 Python 脚本作为测试运行
    为了避免PyCharm将该Python脚本作为测试运行(即pytest自动捕获),你可以做以下几步来确保该脚本作为普通的Python程序执行,而不是作为pytest运行。解决方案:1.确保文件名不以test_开头:Pytest会自动检测以test_开头的文件,并尝试将其作为测试运行。如果你的文件名是test_m......
  • Vue3中Pinia存储和修改数据应用实践
    安装pinia:npminstallpiniamain.ts中使用pinia://引入createApp用于创建应用import{createApp}from'vue'//引入App根组件importAppfrom'./App.vue'//引入路由器importrouterfrom'./router'//创建一个应用constapp=createApp(App)//使用路由器app.use......
  • Vue3 + Echarts 实现中国地图
    基本概念    echarts是一个基于JavaScript的开源可视化库,用于创建和展示各种交互式图表和图形。它可以用于数据分析、数据可视化、数据探索和数据报告等方面。我们一般使用echarts来实现数据可视化,本文我们使用vue3+echars来实现中国地图。准备echarts基本结构首......