数据类型底层

计算机的工作原理

CPU 找数据 数据通过地址信息来标记

高级语言:在内存中"分配"空间用变量来标识
所以变量一定是存在地址的

例如:

int a=10;
//a就是变量名用来对地址进行标识 0x100对这个地址标识

必备常识:8bit=1byte

常见的数据类型:

char short int long 
//如果问这些数据多大
//并没有一定是多大多大
//我们只是规定了 char最小 为一个字节
规定 short<=int<=long
规定 long>=4B

必备常识:2B 最大是65535 整型常量

注意:
1.小数都是默认为double类型的
2.float 类型变量在定义的时候,需要在字面值后加 F / f,建议F

//比如 3.14多大?
float a=3.14;//这个写法是错误的 
//float 是4B   3.14 是8B
//数据表示错误
double a=3.14;
float b=3.14f;
//这两种写法才是对的,请注意这些在以前的学习中所忽略的
//小数不加 f 一定是double类型 大小为8B

必备知识:如何通过补码就知道原数据是多少?
最高位是符号位 通过8421 就可以算出原数据 无需一步一步的倒回原码

%x //输出16进制
%d 有符号的十进制数
%u 无符号的十进制数

C语言是如何表示,操作,找到数据的?

数字:都与符号有一一对应的映射关系 比如"1" 映射0x31
0x31经过编译后在屏幕上显示 数字1

如何在内存中保存? 容量的关注点

1.大小=>容量=>数据类型
高级语言就是为人们提供了一个容量的映射关系

硬件 0 1 两种状态
软件 8bit=1byte 表示一个字节的行为

在不同的设备上容量有所差异
long :Windows 4B
Linux 8B

但规定long long 类型一定是8B

解释一句简单的代码

int a1;
//申请了4B的内存 并用a1来标识

2.容器
定义了一堆标点符号与计算机的内部执行动作做了映射关系

什么是符号,什么是赋值

unsigned int a1=-100;
//无符号数据类型  后面却是一个负数
//编译过程是不会报错的 但这却是很明显的错误

所以赋值只是将内存空间逐位拷贝,只关注容量大小 ,不会考虑数学逻辑,他们大小都是4B,是不会报错的

在这里插入图片描述
明显看出即使存在数学逻辑的错误,并未显示编译错误

并且同样的内存值,由于解码方式不同,打印出结果也不同

解码方式:

%d //补码编码进行解析
%u //正数权值进行组合 8421  所以打印出来必定是一个整数
//若用%u来打印负数,只会得到一个极大的正数

必备常识:0xff就是1111 1111

unsigned char a=0xff;

在这里插入图片描述
为什么会有这样的结果?

首先我们要知道**%d, %u都会自动取4字节的二进制内容进行解析转换为整形数据**

所以都是32位运算
0000 0000 1111 1111
必备常识:一个8个数字,因为一个数字占4位

所以根据正数权值和原码补码运算,%d %u所打印出255

不要被printf所欺骗,多用%x来查看地址

必备常识:乘以2=>左移一位 除以2=>右移一位

关于右移:右移完无符号数肯定右侧补0

很好理解,我们看段代码

#include <stdio.h>int main()
{unsigned int a=-10; unsigned int b1=a*2;unsigned int b2=a/2;//涉及到除法 右移,a是无符号数 要补0 必定为正数printf("%d %u %x\n",b1,b1,b1); printf("%d %u %x\n",b2,b2,b2); return 0;
}

在这里插入图片描述
为什么没有输出-5,却输出了一个很大的正数
就是因为a是无符号数 最高位右移补0 变成正数了

在这里插入图片描述
这样就输出-5了,因为有符号数不再补0,并未改变正负
a有符号,必然进行有符号运算

逻辑判断

#include <stdio.h>int main()
{int c1=-10;unsigned int c2=10;if(c1<c2)printf("correct c1<c2");elseprintf("error c1>c2");
}

这段代码会是什么结果?
在这里插入图片描述
为什么和我们的逻辑不一样?
注意:当数据类型不一样,会把int 强转为 unsigned int来比较

c1//补码前面很多1111
c2//补码很多0000

当他俩都是无符号数最高位还是符号位吗?
不是了,0肯定小于1
所以这里就是正数比负数小了

符号:

= //容量相同就OK
< >//进行数据类型强转后比较补码大小

取反

#include <stdio.h>int main()
{int c1=-10;int d1=~c1;printf("%d %u %x",d1,d1,d1);
}

在这里插入图片描述
必备常识:取反=>原数+取反数=-1 这样能够快速得到取反数为多少

数据类型的容量

#include <stdio.h>int main()
{unsigned char a=250;printf("%d\n",a+6);a=a+6;printf("%d\n",a);
}

在这里插入图片描述
解析:其中250为整型大小为4B a为字符型 大小为1B
大容量->小容量拷贝 必然是装不下的

装不下怎么办—>截断:从低到高,依次拷贝,直到容量不够

第一个打印:是一个表达式常量为4B,所以打印出大小为4B的256
常量大小:4B
第二个打印:是字符型a 大小只有1B
1B的范围是0~255
256刚好超出 所以就补0了,打印出0

依然是大->小拷贝

int main()
{char a2=0x12345678;printf("%d %u %x",a2,a2,a2);
}

在这里插入图片描述
a2大小为1B 0x12345678 一共8位数字 ,一个数字占4位 一共32位=4B

一个字节只能打印出2个数字,所以只打印出了78

再来看看小容量->大容量赋值

int main()
{int c1=0x80000000;unsigned long long a3=c1;printf("%lld %llu %llx",a3,a3,a3);
}

在这里插入图片描述

long long 有64位 c1只有32位 c1=1000 0000 0000

那前面还有32位补什么呢?
补的是符号位

无符号补0,有符号补的是1
所以%x打印出了fffffff

必备常识:size_t 相当于 unsigned long/ unsigned int

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

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

相关文章

【Leecode】Leecode刷题之路第45天之跳跃游戏II

题目出处 45-跳跃游戏II-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 45-跳跃游戏II-官方解法 这道题是典型的贪心算法&#xff0c;通过局部最优解得到全局最优解。以下两种方法都是…

证件照尺寸168宽240高,如何手机自拍更换蓝底

在提供学籍照片及一些社会化考试报名时&#xff0c;会要求我们提供尺寸为168*240像素的电子版证件照&#xff0c;本文将介绍如何使用“报名电子照助手”&#xff0c;借助手机拍照功能完成证件照的拍摄和背景更换&#xff0c;特别是如何将照片尺寸调整为168像素宽和240像素高&am…

Kafka生产者如何提高吞吐量?

1、batch.size&#xff1a;批次大小&#xff0c;默认16k 2、linger.ms&#xff1a;等待时间&#xff0c;修改为5-100ms 3、compression.type&#xff1a;压缩snappy 4、 RecordAccumulator&#xff1a;缓冲区大小&#xff0c;修改为64m 测试代码&#xff1a; package com.bigd…

【开源免费】基于SpringBoot+Vue.JS水果购物网站(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 065 &#xff0c;文末自助获取源码 \color{red}{T065&#xff0c;文末自助获取源码} T065&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Linux下通过sqlplus连Oracle提示字符是乱码▒▒▒[

先参考https://www.cnblogs.com/wrencai/articles/4374451.html 理解下Oracle编码字符集的概念 如下图,刚开始连上是软吗▒▒▒[ 执行export NLS_LANGJAPANESE_JAPAN.AL32UTF8 (这个仅在当前会话起作用)如果好了,说明字符集是这个,不行在尝试别的字符集 如果要永久设置 vim …

多个NVR同时管理EasyNVR多品牌NVR管理工具/设备:IP常见问题解决方案

随着视频监控技术的不断发展&#xff0c;NVR&#xff08;网络视频录像机&#xff09;已经成为现代安防系统的重要组成部分。而为了更高效地管理多个品牌的NVR设备&#xff0c;EasyNVR这一多品牌NVR管理工具应运而生。然而&#xff0c;在实际使用过程中&#xff0c;尤其是在多个…

【C++】C++的单例模式、跟踪内存分配的简单方法

二十四、C的单例模式、跟踪内存分配的简单方法 1、C的单例模式 本小标题不是讨论C的语言特性&#xff0c;而是一种设计模式&#xff0c;用于确保一个类在任何情况下都只有一个实例&#xff0c;并提供一个全局访问点来获取这个实例。即C的单例模式。这种模式常用于资源管理&…

任务中心全新升级,新增分享接口文档功能,MeterSphere开源持续测试工具v3.4版本发布

2024年11月5日&#xff0c;MeterSphere开源持续测试工具正式发布v3.4版本。 在这一版本中&#xff0c;系统设置方面&#xff0c;任务中心支持实时查看系统即时任务与系统后台任务&#xff1b;接口测试方面&#xff0c;新增接口文档分享功能、接口场景导入导出功能&#xff0c;…

Python毕业设计选题:基于django+vue的荣誉证书管理系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 学生管理 教师管理 证书分类管理 荣誉证书管理 菜单列表…

Pr 视频过渡:沉浸式视频

效果面板/视频过渡/沉浸式视频 Video Transitions/Immersive Video Adobe Premiere Pro 的视频过渡效果中&#xff0c;沉浸式视频 Immersive Video效果组主要用于 VR 视频剪辑之间的过渡。 自动 VR 属性 Auto VR Properties是所有 VR 视频过渡效果的通用选项。 默认勾选&#x…

mongoDB的安装及使用

mongodb的安装可参考&#xff1a;Centos系统中mongodb的安装详解_centos安装mongodb-CSDN博客 不要下载最新的版本&#xff0c;新的版本中mongo命令无法使用&#xff0c;也就是安装后不能通过mongo命令登录&#xff0c;我这里使用5.0.30版本&#xff1b; mongodb安装成功后通过…

SDL事件相关

文章目录 事件相关的函数和数据结构用户自定义事件代码相关&#xff1a; 事件相关的函数和数据结构 SDL_WaitEvent :等待一个事件SDL_PushEvent 发送一个事件SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 &#xff0c;用于读取事件&#xff0c;在调用该函数之前&#…

SpringBoot框架在资产管理中的应用

3系统分析 3.1可行性分析 通过对本企业资产管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本企业资产管理系统采用Spring Boot框架&#xff0c;JAVA作…

华为私有接口类型hybrid

华为私有接口类型hybrid Tip&#xff1a;hybrid类型&#xff0c;简称混合型接口。 本次实验模拟2层网络下 vlan10 vlan20 不能互访&#xff0c;vlan10 vlan20 同时可以访问vlan100 sw1配置如下&#xff1a; <Huawei>sy [Huawei]sys sw1 [sw1]vl ba 10 20 100 [sw1]int…

ElasticSearch从环境搭建到如何使用的全过程

ES是什么? ES是一款非常强大的开源的高扩展的分布式全文检索引擎,可以帮助我们从海量数据中快速找到需要的内容,它可以近乎实时的存储、检索数据。还可以实现日志统计、分析、系统监控等功能。 例如京东、淘宝、头条等站内搜索功能 在大数据环境下&#xff0c;Elasticsearc…

SpringCloud框架学习(第一部分:初始项目搭建)

目录 一、SpringBoot和SpringCloud版本选型 1.Springcloud版本选择 2.Springcloud版本选择 3.Springcloud Alibaba版本选择 4.SpringCloud VS SpringBoot VS SpringCloud Alibaba版本三者制约对应关系 二、SpringCloud介绍 1.单体架构 2.微服务架构 3.springcloud 4.S…

uni-app打包后报错云服务空间未关联

使用uni-app打包到h5 项目里面用到了uni-app的云端一体城市选择组件&#xff0c;这个组件数据用到了uniCloud云服务空间&#xff0c;在本地运行没问题&#xff0c;打包之后测试环境报错&#xff1a; 一顿查&#xff0c;查到了官网是这样说的&#xff1a; cli publish --platfo…

解决Mac M芯片 Wireshark 运行rvictl -s 后,出现Starting device failed

前言 mac os big sur 之后&#xff0c;苹果系统的安全性能提升&#xff0c;导致 rvictl -s 创建虚拟网卡失败。 $ rvictl -s 000348120-001621w21184C01E bootstrap_look_up(): 1102Starting device 000348120-001621w21184C01E [FAILED] 这是由于 rvictl 需要开启系统扩展才能…

浙江酒店WIFI广告路由实现——酒店经营

像这样的链接WIFI&#xff0c;后自动弹出连接认证&#xff0c;或者广告&#xff0c;可以展示酒店介绍&#xff0c;住房信息 智能wifi优点&#xff1a; 对于酒店体验而言&#xff1a; 1. 便捷性&#xff1a;客人无需繁琐的认证步骤就能自动连接 WiFi&#xff0c;提升了入住的便…

音视频入门基础:H.264专题(22)——通过FFprobe显示H.264裸流每个packet的信息

音视频入门基础&#xff1a;H.264专题系列文章&#xff1a; 音视频入门基础&#xff1a;H.264专题&#xff08;1&#xff09;——H.264官方文档下载 音视频入门基础&#xff1a;H.264专题&#xff08;2&#xff09;——使用FFmpeg命令生成H.264裸流文件 音视频入门基础&…