c语言赋值截断

news/2024/9/18 17:29:26/ 标签: c语言, 开发语言

目录

截断含义

截断举例


截断含义

在C语言中,将一个较宽范围的整型(如16位的short或int16_t)赋值给一个较窄范围的整型(如8位的char或int8_t)时,如果原值超出了目标类型的表示范围,就会发生所谓的“截断”(truncation)。这意味着,超出的部分会被丢弃,只保留目标类型能够表示的部分。

注意截断指的是存储在内存中补码进行截断。数值的存储都是以补码存储在内存中。

截断举例

以无符号16位整型 赋值给 无符号整型8位为例,8位整型的范围是0-255,16位整型的范围是0-65536。要看到截断的效果,可以选择一个大于255(即8位无符号整型的最大值)但小于65536(16位无符号整型的最大值)的数。比如uint16_t类型的300赋值给uint8_t类型。选择300(二进制表示为0000 0001 0010 1100),那么截断后,将只保留低8位0010 1100,这对应于十进制的44。


再比如int16_t的130赋值给int8_t类型。int8_t类型只能表示-128到127之间的整数。int16_t范围在-32768到32767。130的二进制补码表示(在int16_t中)是0000 0000 1000 0010。但是,当将其赋值给int8_t时,只有低8位被保留,即1000 0010。

由于int8_t类型是有符号类型,首位1看作符号位,为负数。根据二进制补码的规则,要计算这个数的实际值,需要先取反(不包括最高位)然后加1,可以得到为-126。

更简单的方法就是忽略符号位(即最高位),剩下的7位是000 0010,这是2的二进制表示。但是,由于整个数是负数,在二进制补码系统中,这是通过从-128(1000 0000)开始加上这个正数来完成的,即-126。此外,如果相加后的值超过了127(int8_t得最大值),可由循环得到最终的值,比如相加后的值为128那么最终就是-128,因为127的下一个值是-128。

#include <stdio.h>int main(void)
{uint16_t wideVar = 300; // unsigned shortuint8_t narrowVar = (uint8_t)wideVar; // unsigned charprintf("%u, %u\n", wideVar, narrowVar); // 300, 44int16_t wideVar2 = 130;  // signed shortint8_t narrowVar2 = (int8_t)wideVar2; // signed charprintf("%d, %d\n", wideVar2, narrowVar2); // 130, -126return 0;
}


http://www.ppmy.cn/news/1519610.html

相关文章

一种动态防御策略——移动目标防御(MTD)

文章速览&#xff1a; 1、高级规避攻击 2、用移动目标防御对抗欺骗 常见做法操作系统和应用程序才是真正的战场打破游戏规则 网络攻击的技术变得愈发难测&#xff0c;网络攻击者用多态性、混淆、加密和自我修改乔装他们的恶意软件&#xff0c;以此逃避防御性的检测&#xff0c;…

把http网站变成https

网站建设好后默认是HTTP网站&#xff0c;会被浏览器直接标注为不安全站点&#xff0c;甚至搜索引擎上也排名也不是那么出色。 HTTP协议是浏览网站和在线资源的基本协议。由于HTTP的连接未加密&#xff0c;因此往往不安全。HTTPS是默认HTTP协议的安全扩展。 访问HTTPS网站时&…

MyBatis关联查询的方式

文章目录 一对一关联查询XML方式注解方式 一对多关联查询XML方式注解方式 多对多关联查询XML方式注解方式 注意事项 MyBatis是一个优秀的持久层框架&#xff0c;它支持复杂的SQL查询、映射以及高级映射。在处理关联查询时&#xff0c;MyBatis提供了强大的支持&#xff0c;无论是…

【 html+css 绚丽Loading 】 000031 三元轮回盘

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽Loading&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495…

东南大学研究生-数值分析上机题(2023)Python 4 多项式插值与函数最佳逼近

3次样条插值函数 4.1 题目 (1) 编写求第一型3次样条插值函数的通用程序&#xff1b; (2) 已知汽车门曲线型值点的数据如下&#xff1a; i012345678910xi012345678910yi2.513.304.044.705.225.545.785.405.575.75.80 端点条件为 y 0 ′ 0.8 y_00.8 y0′​0.8&#xff0c; y…

开源项目FaceFusion-AI换脸

FaceFusion简介 FaceFusion是一个开源的AI换脸和增强工具&#xff0c;支持图像和视频处理。它采用最新的深度学习技术&#xff0c;提供了一系列强大的功能&#xff0c;包括人脸替换、人脸增强、唇形同步等。FaceFusion的目标是为用户提供一个易用、高效且功能丰富的AI换脸解决…

LabVIEW中10μs方波生成问题

在LabVIEW中使用NI PCIe-6353卡生成并控制10μs级别的方波输出可能遇到频率调整的问题。下面将详细分析常见问题的原因&#xff0c;如采样率设置、时钟源配置、波形生成方式等&#xff0c;并提供具体的解决方案&#xff0c;帮助用户成功生成并调整高精度方波信号。 为了在LabVI…

npu是什么?tpu是什么?gpu是什么?

好的,我来解释一下这些计算单元的区别: NPU (Neural Processing Unit): NPU 是专门针对神经网络计算优化的处理器。它通常用于快速执行机器学习模型中的矩阵运算和激活函数计算。NPU 的设计目标是提高机器学习任务的性能和能效,比如语音识别、图像识别等。代表性产品包括华为的…

http的三次握手和四次挥手

http的三次握手 C:客户端 S&#xff1a;服务器端 第一次握手 C&#xff1a;在吗&#xff1f;我要和你建立连接。就是客户端向服务器发送一个SYN包。 第二次握手&#xff1a; S&#xff1a;在的呢&#xff01;来吧&#xff0c;确定要连接吗&#xff1f;就是服务器收到SYN包…

SSL证书如何保护IP地址的安全

SSL证书在保护IP地址安全方面起着至关重要的作用&#xff0c;主要通过以下几个方面来实现&#xff1a; 一、数据加密功能 SSL证书为通过IP地址进行的通信提供数据加密功能。这意味着&#xff0c;当数据通过IP地址在客户端和服务器之间传输时&#xff0c;SSL证书能够确保这些数…

Linux 常用命令 ulimit、uptime、curl、scp、dos2unix 提升开发和运维效率

Linux 常用命令&#xff1a;从资源限制到网络传输 一、前导&#xff1a;概述二、ulimit 用户资源三、uptime 机器启动时间负载四、curl 命令五、scp 远程拷贝六、dos2unix和unix2dos命令七、总结 一、前导&#xff1a;概述 本系列主要讲解Linux运行时命令&#xff0c;包括网络…

第二证券:股指预计保持震荡格局 关注消费电子、汽车等板块

2024年1—7月&#xff0c;全国一般公共预算收入135663亿元&#xff0c;同比下降2.6%&#xff0c;扣除上一年同期中小微企业缓税入库抬高基数、上一年年中出台的减税政策翘尾减收等特殊因素影响后&#xff0c;可比添加1.2%左右。综合考虑超长时间特别国债年内相对滑润发行、8月份…

网络安全ctf比赛/学习资源整理,解题工具、比赛时间、解题思路、实战靶场、学习路线,推荐收藏!

前言 对于想学习或者参加CTF比赛的朋友来说&#xff0c;CTF工具、练习靶场必不可少&#xff0c;今天给大家分享自己收藏的CTF资源&#xff0c;希望能对各位有所帮助。 CTF在线工具 首先给大家推荐我自己常用的3个CTF在线工具网站&#xff0c;内容齐全&#xff0c;收藏备用。…

告别卡顿:Miniforge如何优化你的Python环境告别Conda

在Python的数据科学领域&#xff0c;环境管理是一个不可或缺的环节&#xff0c;而Conda凭借其出色的环境隔离和包管理能力&#xff0c;成为了这一领域的中坚力量。它通常作为Anaconda或Miniconda的一部分&#xff0c;为用户提供了一个统一的平台来管理Python项目所需的各种库和…

深入探索【Hadoop】生态系统:Hive、Pig、HBase及更多关键组件(下)

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《大数据前沿&#xff1a;技术与应用并进》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、什么是Hadoop 2、Hadoop生态系统的构成概览 二…

开放式耳机对耳朵的伤害大吗?四款平价好用的蓝牙耳机推荐

开放式耳机对耳朵伤害不大。因为其设计特点使得声音可以在一定程度上与外界环境相通&#xff0c;减少了对耳膜的直接压力和封闭环境带来的影响&#xff0c;相比封闭式耳机&#xff0c;更不容易导致耳部压力失衡和细菌滋生等问题。 以下是比较好的几款产品&#xff0c;可供借鉴&…

电路基础 ---- 电压源、电流源、受控电源

1 电压源 定义&#xff1a;两端电压总是保持定值&#xff0c;与流过它的电流无关 1.1 分析 对于如下电路&#xff1a; 当 R → 0 R\to 0 R→0&#xff08;短路&#xff09;时&#xff0c; i ∞ i\infty i∞&#xff08;会烧坏电压源&#xff09;当 R → ∞ R\to\infty R…

关闭银河麒麟系统Qt Creator调试程序运行提示安全授权认证窗口

关闭银河麒麟系统Qt Creator调试程序提示安全授权认证窗口 通过如下方法关闭提示 步骤1&#xff1a;打开终端 执行命令. $sudo vim /etc/default/grub步骤2&#xff1a;按“i”键编辑输入&#xff0c;将该文件里的以下内容&#xff1a; GRUB_CMDLINE_LINUX_SECURITY‘securit…

我的第一个QT程序_创建项目_全程图解

创建项目 1.打开QT开发工具 2.点【创建项目】 在弹出的窗口的项目列表中选择【Application(Qt)】中间列选择 第一项 如上图。 3.输入项目名称和项目保存的路径 4.Build system下拉列表中有三个选项&#xff0c;虽然Qt6主推CMake&#xff0c;所以可以默认&#xff0c;直接下一步…

[M滑动窗口] lc1004. 最大连续1的个数 III(滑动窗口+模板题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;1004. 最大连续1的个数 III 题单&#xff1a; 滑动窗口&#xff08;定长/不定长/多指针&#xff09; 二、不定长滑动窗口 2.1 求最长/最大 2. 题目解析 思路&#xff1a; 比较直接的滑动窗口哈&#xff0c…