数据的表示和存储 第3讲 C语言中的整数

news2024/11/17 17:41:14

深耕AI

​互联网行业 算法研发工程师

概括

本讲主要介绍了C语言中的整数表示。

无符号整数能够表示的最大值比带符号整数要大。带符号整数使用补码来表示,补码的运算系统是一种模运算系统,能够实现加减运算的统一。在C语言中,如果一个表达式中同时包含无符号整数和带符号整数,编译器会将带符号整数强制类型转换为无符号整数进行运算。

在C语言中,整数类型分为无符号整数带符号整数两类。

无符号整数是一个01序列。

可以按照最低有效位(LSB)最高有效位(MSB)来描述。

通常在计算机中,我们采用“最高有效位”在最左边,“最低有效位”在最右边的形式来表示无符号整数,与我们日常生活中的十进制表示形式一致。

例如,在一个8位的二进制数中:

  • 最高有效位(MSB)是第8位(从左到右,从1开始计数)。
  • 最低有效位(LSB)则是第1位。

这种排列方式使得我们可以直观地理解二进制数的权重分布。例如,二进制数 1001 可以解释为:

  • 第1位(LSB)权重为 20=120=1,值为 1
  • 第2位权重为 21=221=2,值为 0
  • 第3位权重为 22=422=4,值为 0
  • 第4位(MSB)权重为 23=823=8,值为 1

所以这个数的十进制值为 8×1+4×0+2×0+1×1=98×1+4×0+2×0+1×1=9。

这种表示法在计算机体系结构中非常重要,因为它影响了数据存储、传输以及加密解密算法的设计等各个方面。

定点数【定点整数+定点小数】的编码方式有3种:原码,补码,移码。

通常我们用补码表示带符号整数【50年代以来,计算机中的带符号数都用补码表示】。

浮点数中,有两个定点整数,一个是尾数部分,一个是整数部分。

尾数部分:用定点小数表示【原码表示】。

指数部分:用定点整数表示【移码表示】。

问:已知2147483647为2^31-1, C语言中的关系表达式"2147483647U>-2147483647-1"的结果是( )。

答:False。部分分析如下:

有符号二进制数 1000 0000 0000 0000 0000 0000 0000 0000

在有符号整数表示中,最高位是符号位。如果最高位为 1,则表示该数为负数;如果最高位为 0,则表示该数为正数。

对于 1000 0000 0000 0000 0000 0000 0000 0000,最高位为 1,这意味着它是一个负数。根据补码表示法,这个数表示的是 -2147483648

在有符号整数的情况下,32位二进制数 1000 0000 0000 0000 0000 0000 0000 0000 使用的是补码表示法。补码是用来表示有符号整数的一种方式,在这种方法中,最高位(第32位在此例中)是符号位,0 表示正数,1 表示负数。

在补码表示法中,负数的绝对值是通过将所有位取反(除了符号位之外),然后对结果加一得到的。但对于 1000 0000 0000 0000 0000 0000 0000 0000,取反后仍然是 1000 0000 0000 0000 0000 0000 0000 0000,因为除了最高位外的所有位都是 0,取反之后加一还是 1 跟一堆 0

因此,这个数表示的是 -2^{31},也就是 -2147483648

总结:在有符号32位整数中,二进制数 1000 0000 0000 0000 0000 0000 0000 0000 表示的十进制数是 -2147483648

这是因为 2^{31} 对应于二进制中的第32位,即 1000 0000 0000 0000 0000 0000 0000 0000,其值为 2147483648,而在有符号整数中,这个值表示为 -2147483648

无符号二进制数 1000 0000 0000 0000 0000 0000 0000 0000

在无符号整数表示中,所有位都用来表示数值的大小,没有专门的符号位。因此,这个数直接表示其二进制值对应的大小。

对于 1000 0000 0000 0000 0000 0000 0000 0000,其对应的十进制数为 2^{31},即 2147483648

总结

  • 有符号1000 0000 0000 0000 0000 0000 0000 0000 表示 -2147483648
  • 无符号1000 0000 0000 0000 0000 0000 0000 0000 表示 2147483648

int x=-1。请问:

在32位机器上,x为无符号数时,表示的十进制数是多少?x为有符号数时,表示的十进制数又是多少?

解答:

首先将-1转换为2进制数(补码)。为:

1111 1111 1111 1111 1111 1111(32个1)。具体原因是:

对于一个负数的补码表示,可以按照以下步骤进行:

找出该负数的绝对值:比如 -5 的绝对值是 5。
写出该绝对值的原码:假设我们使用 8 位表示,则 5 的二进制表示是 00000101。
对该绝对值的原码取反(按位取反):将 00000101 取反后得到 11111010。
对取反后的结果加 1:11111010 + 1 得到 11111011。
因此,-5 在 8 位二进制中的补码表示就是 11111011。
同理:-1的补码是:1111 1111.

如果这个数是无符号数,那么,它表示的十进制数,就等于:2的32次方-1。

如果这个数是有符号数,那么,由于首位是1,表示负数,其次,将其先减去1,然后各位取反,就得到:
0000 0000 0000 0000 0000 0001。所以,结果是-1。

对于比较两个数,首先要确定两个数的类型,到底时无符号数,还是带符号数。然后才能进行比较。

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

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

相关文章

7.MySQL内置函数

目录 日期函数时间函数字符串函数数学函数其他函数 日期函数 函数名称描述current_date()当前日期current_time()当前时间current_timesamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date, interval d_value_tyep)在date中添加日期函数或时间。interval后…

JMeter压测HTTPS 在window 11处理SSL证书认证

在此位置,找到chrome 的证书 证书到出到指定的路径, 利用jdk中的keytool.exe工具,重新生成证书 crm 去到命令窗口,再去到JDK路径下,如下 输入 keytool -import -alias “zhengshu.store” -file “D:\Program F…

HarmonyOS鸿蒙系统开发应用程序,免费开源DevEco Studio开发工具

DevEco Studio 是华为为 HarmonyOS 和 OpenHarmony 开发者提供的官方集成开发环境(IDE),它基于 IntelliJ IDEA Community 版本打造,提供了代码编辑、编译、调试、发布等一体化服务。 一、DevEco Studio支持系统 DevEco Studio支持…

63.【C语言】再议结构体(上)

1.复习 20.【C语言】初识结构体(重要) 48.【C语言】结构体补充 2.结构体的特殊声明 01.匿名结构体 *定义 不完全声明,即结构体没有自己的名字(没有结构体标签) *注意事项 1.匿名结构体只能使用一次 2.下列代码合法吗 struct {int a;char b;floa…

使用python获取百度一下,热搜TOP数据详情

一、查找对应链接 # 警告:以下代码仅供学习和交流使用,严禁用于任何违法活动。 # 本代码旨在帮助理解和学习编程概念,不得用于侵犯他人权益或违反法律法规的行为。 1、打开百度页面 百度一下,你就知道 2、点击F12 或 右键鼠标…

text2sql方法:NatSQL和DIN-SQL

NatSQL NatSQL出自2021年9月的论文《Natural SQL: Making SQL Easier to Infer from Natural Language Specifications》(github),它是一种SQL 中间表征(SQL intermediate representation(IR))方法。 NatSQL作者认为Text2SQL的关键挑战是自然语言描述和其对应的SQ…

Cookie、Session、Token(JWT)还不懂?

Cookie、Session、Token(JWT) 三者的区别与用途!如何进行身份认证,保持用户登录状态? Cookie、Session 和 Token 都是在 Web 开发中用于管理用户状态和进行身份认证的技术,它们之间有以下区别和用途&#…

【js逆向学习】酷我音乐排行榜 python+nodejs(webpack)

逆向目标 目标网址: https://www.kuwo.cn/rankList目标接口: https://www.kuwo.cn/api/www/bang/bang/musicList 加密参数: 参数一:secret参数二:reqId 逆向过程 老规矩先分析网络请求,我们可以分析到网络请求是通过ajax进行的&#xff…

【C++】C/C++内存管理(new/delete)

C/C内存分布 代码内存相关问题 int globalVar 1; static int staticGlobalVar 1;void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(siz…

yolox训练自己的数据集

环境搭建 gpu按自己情况安装 nvidia-smi 查看自己的版本 CUDA和cudnn 按自己的安装,我的驱动551.76,注意不要用最新的,官网只要求驱动是大于等于,可以用低版本的cuda,我安装的是CUDA 11.1 cuda下载后&#xff0c…

报告查询系统小程序开发制作方案

报告查询小程序系统主要是为了解决传统报告查询方式往往依赖于纸质文档或复杂的内网系统,存在查询效率低、信息更新慢、携带不便等问题。 一、目标用户 企业员工:需要频繁查询各类工作报告,如销售人员查询销售业绩报告,财务人员查…

信道衰落的公式

对于天线: 对于天线的面积计算: 天线的接收功率密度: 天线的接收功率: 移动无线信道(I) (xidian.edu.cn)https://web.xidian.edu.cn/zma/files/20150710_153736.pdf 更加常用的考虑了额外的信道衰落pathlo…

基于YOLOv5的农作物病虫害识别系统设计与实现(PYQT+web端+微信小程序+YOLOv5+训练数据集+论文+部署文档+开题报告)

摘要 农作物病虫害是农业生产中的关键问题,病虫害的爆发和侵袭不仅严重影响农作物产量和质量,还可引发局部地区严重的灾害性损失。因此,及时发现和预防农作物病虫害的发生和发展至关重要。本文以农作物病虫害图像为载体,运用深度…

python的高级用法

对于python的使用,我们常见的用法是python xx.py直接执行脚本,有时可能您需要在脚本的第一行添加(#!/usr/bin/env python3 或 #!/usr/local/bin/python3),然后chmod确保脚本文件具有可执行权限。这样脚本就可以在终端直…

从哪里下载高清解压视频素材?推荐五个优质素材资源网站

想制作吸引人的抖音小说推文,但不知道从哪里获取高清解压视频素材?今天就为大家推荐五个优秀的网站,帮助你轻松找到所需的素材,提升你的创作质量。 首先是蛙学网 作为国内顶级的短视频素材网站,蛙学网提供了丰富的4K高…

Vxe UI vue 使用 vxe-tabs 页签实现右侧操作按钮、关闭所有页签、关闭右侧、关闭左侧

Vxe UI vue 使用 vxe-tabs 页签实现右侧操作按钮、关闭所有页签、关闭右侧、关闭左侧 查看 github <template><div><vxe-tabs v-model"selectTab" :options"tabList"><template #extra><vxe-pulldown :options"tabOptio…

Flood Fill模型

这个模型主要用来求连通块的数量&#xff0c;在求连通块时有“8连通”和“4连通”之分。 看上面的图形&#xff0c;如果是4连通那么红色和绿色就不连通&#xff08;只有一个格子的“上下左右”相连才叫连通&#xff09;。如果是8连通那就联通&#xff08;不仅仅包含边相连&…

SwiftUI简明概念(4):如何对shape同时进行fill和stroke

1、iOS17方案 iOS17上可以同时对shape调用fill和stroke&#xff1a; Circle().stroke(.red, lineWidth: 20).fill(.orange).frame(width: 150, height: 150) 效果也如我们所预料的&#xff1a; 而且stroke可以调用任意次&#xff1a; Circle().stroke(.blue, lineWidth: 45…

【路径规划】基于球向量的粒子群优化(SPSO)算法在无人机路径规划中的实现

摘要 本文介绍了基于球形矢量的粒子群优化&#xff08;Spherical Particle Swarm Optimization, SPSO&#xff09;算法&#xff0c;用于无人机&#xff08;UAV&#xff09;路径规划。SPSO算法通过引入球形矢量的概念&#xff0c;增强了粒子群在多维空间中的探索和利用能力&…

TXT文档批量处理,根据总行数平均分成多个文件保存,批量拆分实例分享

在高强度的工作下&#xff0c;怎样拆分文档&#xff0c;手动拆分整理&#xff0c;不仅效率低&#xff0c;而且还容易出错。当然是要选择操作轻松简单首助编辑高手&#xff0c;提高工作效率。 1、打开软件并选择到文本批量操作功能选项上&#xff0c;选择文本批量操作&#xff1…