c语言中整数在内存中的存储

news2024/10/28 17:38:25

整数的二进制表示有三种:原码,反码,补码

有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用‘0’表示“正,用1表示‘负’

最高位的以为被当作符号位,剩余的都是数值位。

整数的原码,反码,补码都相同

负整数的三种表示方法各不相同

     原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码

     反码:将原码的符号位不变,其他位一次按位取反就可以得到反码

     补码:反码+1就是补码

对于整形来说:数据存放内存中起始存放的就是二进制的补码

为什么呢?

在计算机系统中,数值一律用补码来表示和存储

原因在于,使用补码,可以将符号位和数值与统一处理

同时,加法和减法也可以统一处理(CPU只有加法器),此外补码和原码可以相互转换,其运算过程是相同的,不需要额外的硬件电路

例题:变量不同的定义,分别用整形进行打印

#include<stdio.h>
int main()
{
	char a = -1;
	signed char b = -1;
	unsigned char c = -1;
	printf("a=%d,b=%d,c=%d",a,b,c);
	return 0;
 }

 运行结果是:a=-1,b=-1,c=255

这是因为

//-1是一个负数 
 //原码:10000000000000000000000000000001
 //反码:11111111111111111111111111111110
 //补码:11111111111111111111111111111111
 //所以char占用8个bit,截断所以a-11111111
 //反码:10000000000000000000000000000000 
 //原码:10000000000000000000000000000001 
 //%d打印有符号的整数,要看符号位 
 //%u打印无符号的整数,不用看符号位 
 //而char类型大部分编译器是默认为有符号的
 //所以a和b都是运行出来都是-1, 
 //在c里面a->11111111
 //整型提升:无符号整数,高位补0
 //提升:00000000000000000000000011111111 符号位是0代表正数。
 //原码,反码,补码相同,所以c就是255 

例题:运行结果是4294967168

#include<stdio.h>
int main()
{
	char a = -128;
	printf("%u",a);
	return 0;
 } 
 //-128的原码
 //原码:10000000000000000000000010000000 
 //反码:11111111111111111111111101111111
 //补码;11111111111111111111111110000000 
 //char占8个bit,截断8位
 //a——10000000 
 //整形提升,高位时1,有符号位,高位补符号位 
 //提升:11111111111111111111111110000000
 //他其实就是在内存中是补码 
 //%u打印无符号整数,%u的角度,他认为内存中存储的是无符号的整数。
 //所以认位他没有符号位
 //直接打印:11111111111111111111111110000000 
  

例题:有符号整数和无符号整数分别进行打印

#include<stdio.h>
int main()
{
	signed int num = -10; 
	printf("%d\n",num);  //-10
	printf("%u\n",num);  //4294967286
	return 0;
 } 
 
  
#include<stdio.h>
int main()
{
	unsigned int num = -10; 
	printf("%d\n",num);  //-10
	printf("%u\n",num);  //4294967286
	return 0;
 } 
 
  

所以对于按照不同方式打印的,就是要根据他的类型进行判断,是unsigned就用%u打印,是signed就用%d进行打印。

例题:

#include<stdio.h>
#include<string.h>
int main()
{
	char a[1000];
	int i=0;
	for(i=0;i<1000;i++)
	{
		a[i]=-1 - i;
	}
	printf("%d",strlen(a));
	return 0;
 } 
 //运行结果:255
 //strlen是求的字符串的长度,统计的是\0之前出现的字符的个数
 
 
  

就是从-1开始加加加,一直到-128 再加1就是127直到1,所以0之前的个数就是127+128=255,而不是1000.

例题:当无符号整数时全局变量的时候

#include<stdio.h>
unsigned char i = 0;//全局变量 
int main()
{
	for(i=0;i<=255;i++)
	{
		printf("hello world\n");
	}
	return 0;
 } 
 //会一直循环,因为i是无符号字符型。 
 

例题:

#include<stdio.h>
int main()
{
	unsigned char i ; 
	for(i=9;i>=0;i--)
	{
		printf("%u\n",i);
	}
	return 0;
 } 
//会无限循环,unsigned是无符号整数,条件一直成立 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2225571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智慧旅游微信小程序平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Vue3.js - 数据代理方法

1. Vue导入 最简单的方式&#xff0c;通过联网接入Vue3的接口 <script type"text/javascript" src"https://unpkg.com/vue3"></script> 2. Vue实例 2.1 创建Vue实例 const vm Vue.createApp({}) 使用Vue中的createApp方法创建对应实例&a…

115页PPT华为管理变革:制度创新与文化塑造的核心实践

集成供应链&#xff08;ISC&#xff09;体系 集成供应链&#xff08;ISC&#xff09;体系是英文Integrated Supply Chain的缩写&#xff0c;是一种先进的管理思想&#xff0c;它指的是由相互间提供原材料、零部件、产品和服务的供应商、合作商、制造商、分销商、零售商、顾客等…

AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南

这段时间 GPT4 多了很多功能&#xff0c;今天主要是增加了 GPTs Store 的介绍和 创建 GPTs 的简单方法&#xff0c;那么我们开始吧&#xff0c;文末有彩蛋。 这里主要讲解如下几个点&#xff1a; 1&#xff1a; ChatGPT 4.0 插件的使用 2&#xff1a;ChatGPT 4.0 高级数据分…

【小白学机器学习16】 概率论的世界观2: 从正态分布去认识世界

目录 1 从正态分布说起 1.1 正态分布的定义 1.2 正态分布的名字 1.3 正态分布的广泛&#xff0c;和基础性 2 正态分布的公式和图形 2.1 正态分布 2.2 标准正态分布 3 正态分布的认识的3个层次 3.1 第1层次&#xff1a;个体的某个属性的样本值&#xff0c;服从正态分布…

四、大模型(LLMS)langchain面

本文精心汇总了多家顶尖互联网公司在大模型进阶知识考核中的核心考点&#xff0c;并针对这些考点提供了详尽的解答。并提供电子版本&#xff0c;见于文末百度云盘链接中&#xff0c;供读者查阅。 一、大模型langchainmian • 一、什么是 LangChain? • 二、LangChain 包含哪些…

kafka 如何减少数据丢失?

大家好&#xff0c;我是锋哥。今天分享关于【kafka 如何减少数据丢失?】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka 如何减少数据丢失? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Apache Kafka 是一个高吞吐量的分布式消息队列&#xff0c;广泛用…

FPGA第 13 篇,使用 Xilinx Vivado 创建项目,点亮 LED 灯,Vivado 的基本使用(点亮ZYNQ-7010开发板的LED灯)

前言 在FPGA设计中&#xff0c;Xilinx Vivado软件是一款功能强大的设计工具&#xff0c;它不仅支持硬件描述语言&#xff08;HDL&#xff09;的开发&#xff0c;还提供了丰富的图形化设计界面&#xff0c;方便用户进行硬件设计、调试和测试。这里我们将详细介绍&#xff0c;如…

Error in eval(family$initialize): y值必需满足0 <= y <= 1解决

今天在使用R语言对Weekly进行交叉验证时&#xff0c;发生如下报错&#xff1a; 错误于eval(family$initialize): y值必需满足0 < y < 1 错误代码为&#xff1a; Weekly<-read.csv("Weekly.csv") set.seed(1) attach(Weekly) glm.fit1 glm(Direction~Lag…

App测试环境部署

一.JDK安装 参考以下AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 二.SDK安装 安装地址&#xff1a;https://www.androiddevtools.cn/ 解压 环境变量配置 变量名&#xff1a;ANDROID_SDK_HOME 参考步骤&#xff1a; A…

图---java---黑马

图 概念 图是由顶点(vertex)和边(edge)组成的数据结构&#xff0c;例如 该图有四个顶点&#xff1a;A&#xff0c;B&#xff0c;C&#xff0c;D以及四条有向边&#xff0c;有向图中&#xff0c;边是单向的。 有向 vs 无向 如果是无向图&#xff0c;那么边是双向的&#x…

汽车电子工厂中的防静电监控系统,你了解多少?

在汽车电子制造领域&#xff0c;静电放电(ESD)带来的危害不容忽视。微小的静电放电都可能导致电子元器件损坏&#xff0c;进而引发昂贵的返工、产品召回甚至安全事故。因此&#xff0c;有效的防静电监控系统成为汽车电子工厂保障产品质量和安全生产的关键。 传统的防静电措施主…

全面解释人工智能LLM模型的真实工作原理(三)

前一篇&#xff1a;《全面解释人工智能LLM模型的真实工作原理&#xff08;二&#xff09;》 序言&#xff1a;前面两节中&#xff0c;我们介绍了大语言模型的设计图和实现了一个能够生成自然语言的神经网络。这正是现代先进人工智能语言模型的雏形。不过&#xff0c;目前市面上…

深入分析梧桐数据库SQL查询之挖掘季度销售冠军

在现代商业环境中&#xff0c;对销售数据的深入分析是企业决策过程中不可或缺的一部分。通过分析销售数据&#xff0c;企业可以识别出表现最佳的员工&#xff0c;从而激励团队&#xff0c;优化销售策略&#xff0c;并提高整体业绩。本文将详细介绍如何使用SQL查询来识别每个季度…

Navicat导入Excel数据时数据被截断问题分析与解决方案

目录 前言1. 问题分析1.1 默认字段类型的影响1.2 MySQL诊断机制的限制 2. 解决方案2.1 修改字段长度2.2 修改Excel数据以影响推断2.3 检查导入工具的设置 3. 其他注意事项3.1 注册表的修改3.2 增加自增ID 4. 结语 前言 在数据库的日常操作中&#xff0c;将Excel数据导入MySQL是…

基于Python和OpenCV的疲劳检测系统设计与实现

项目运行 需要先安装Python的相关依赖&#xff1a;pymysql&#xff0c;Django3.2.8&#xff0c;pillow 使用pip install 安装 第一步&#xff1a;创建数据库 第二步&#xff1a;执行SQL语句&#xff0c;.sql文件&#xff0c;运行该文件中的SQL语句 第三步&#xff1a;修改源…

JVM(HotSpot):GC之G1垃圾回收器

文章目录 一、简介二、工作原理三、Young Collection 跨代引用四、大对象问题 一、简介 1、适用场景 同时注重吞吐量&#xff08;Throughput&#xff09;和低延迟&#xff08;Low latency&#xff09;&#xff0c;默认的暂停目标是 200 ms超大堆内存&#xff0c;会将堆划分为…

Unreal Engine5安装Niagara UI Renderer插件

系列文章目录 文章目录 系列文章目录前言一、如何下载安装Niagara UI Renderer插件 前言 在2024.10.24号的今天发现unreal engine官网已经没有虚幻商城了&#xff0c;取而代之的是FAB ‌虚幻商城已经停止运营&#xff0c;Epic Games推出了新的数字资产商店FAB。‌ Epic Games…

vue mysql 直连

最近又搞了个小项目&#xff0c;单机版本的内部考勤管理系统&#xff0c;直接部署在对方的工作电脑上&#xff0c;不需要在云端部署&#xff0c;因为项目本身就小&#xff0c;我就没配置后端同事进行开发&#xff0c;而是通过VUE直连mysql进行业务开发及保存。后期再通过PM2来守…

灵动AI:艺术与科技的融合

灵动AI视频官网地址&#xff1a;https://aigc.genceai.com/ 灵动AI 科技与艺术的完美融合之作。它代表着当下最前沿的影像技术&#xff0c;为我们带来前所未有的视觉盛宴。 AI 视频以强大的人工智能算法为基石&#xff0c;能够自动分析和理解各种场景与主题。无论是壮丽的自然…