有符号数与无符号数之间的转换

如何以十六进制表示负数

在C/C++编程中整数常用的有2种表现形式,一种是以十进制表示,一种是以十六进制表示。同时这些整数又区分为有符号数无符号数。其中让人有点困扰的是有符号数中负数的16进制表示法。比如-20,它的十六进制原码为0x1001 0100(0x94),补码为0x1110 1100(0xec)。在软件中如果想将-20以十六进制形式赋给一个char型有符号变量,则应该使用如下代码:

char cValue = 0xec;  //0xec是-20的补码,不能用-20的原码0x94表示

由此可见,软件中负数的十六进制应该用补码表示

代码中负数怎么转换为补码形式(也就是无符号数)

有时我们需要在代码中将负数转换为补码形式,最方便的方式就是直接将十进制的负数赋值给一个无符号数变量,如:

unsigned char uValue = -20;  //则uValue就会变为-20的补码0xec

如何手动地将有符号数转换为无符号数(也就是补码)

负数转换为补码步骤:保持符号位不变,先将其余位取反,再加上1。 手动用这个步骤去计算负数的补码显然比较慢。比较快的方法是用模的概念来计算

-20转换为无符号数是0xec(就是-20的补码),0xec的十进制是正数236。而abs(-20) + 236正好等于256。256就是8bit数的模,再比如对于16bit的数,模为65536。所以将负数转换为无符号数,实际就是这个负数与模相加后得到的值

如何手动地将无符号数(也就是补码)转换为有符号数

无符号数转换为有符号数时先看无符号数的最高比特位,如果是0,则可以直接转换。如无符号数0x14转换为有符号数就是20。如果最高位为1,则也需要用模的概念来计算。如0xec(十进制为236),转换为有符号数是-20。实际就是这个无符号数减去模后得到的值

【为什么学习数据挖掘】       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。       从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 【超实用的课程内容】      本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。 本课程分为三大部分: 基础知识篇:主要讲解数据挖掘这项技能的基本工作流程和介绍和入门必须的基本技能Python语言的入门,带领大家了解数据挖掘常见操作和基础知识。 数据采集篇:学习如何解决数据挖掘的数据来源问题,读取各类型不同的数据包括CSV,excel,MySQL进行数据采集的交互。 数据探索篇:本篇主要解决数据的预处理保证数据的质量并用常见数据挖掘算法进行特征提取,分析数据背后隐含的信息。 【报名须知】 课程采取录播模式,课程永久有效,可无限次观看 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 【如何开始学习?】 PC端:报名成功后可以直接进入课程学习 移动端:下载CSDN学院或CSDN
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页