C语言有符号数与无符号数之间的转换
2页1、C语言有符号数与无符号数之间的转换无符号数:不存在正负之分,所有位都用来表示数的本身。有符号数:最高位用来表示数的正负,最高位为1则表示负数,最高位为0则表示正数。1无符号数-有符号数 看无符号数的最高位是否为1,如果不为1(为0),则有符号数就直接等于无符号数;如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。以unsigned char 和char为例子:1.1将无符号数2转为有符号数2的原码是:0000 0010,可知最高位不为1,因此转为有符号数之后也是2。程序: 1 #include 2 3int main(void) 4 5 unsigned char i = 2; 6 7 printf(%d/n,(char)i); 8 9return0;10运行结果:1.2将无符号数130转为有符号数130的原码是:1000 0010,可知最高位为1,因此需要取它的补码,补码为1111 1110,这是一个负数,取最高位作为-号,取最低7位作为数值得到的结果是-126。程序: 1 #include 2 3int main(void) 4 5 unsigned char i
2、 = 130; 6 7 printf(%d/n,(char)i); 8 9return0;10 运行结果:2有符号数-无符号数 看有符号数的最高位是否为1,如果不为1(为0),则无符号数就直接等于有符号数;如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。以char 和unsigned char为例子:2.1将有符号数3转为无符号数3的原码是:0000 0011,可知最高位不为1,因此转为无符号数之后也是3。程序: 1 #include 2 3int main(void) 4 5char i = 3; 6 7 printf(%u/n,(unsigned char)i); 8 9return0;10 运行结果:2.2将有符号数-7转为无符号数-7的原码是:1000 0111,可知最高位为1,因此需要取它的补码,补码为1111 1001,这是一个正数,因此整个数的值就是249。程序: 1 #include 2 3int main(void) 4 5char i = -7; 6 7 printf(%u/n,(unsigned char)i); 8 9return0;10 运行结果:总结: 有符号数与无符号数之间的转换,都要看要转换的数的最高位是否为1,如果不为1,则转换结果就是要转换的数的本身;如果为1,则转换结果就是转换的数(看作是负数)的补码。
《C语言有符号数与无符号数之间的转换》由会员鲁**分享,可在线阅读,更多相关《C语言有符号数与无符号数之间的转换》请在金锄头文库上搜索。
某某某管业质量手册.docx
山东省济南市历城二中2021-2021学年高二化学教学质量检测试题.docx
生物标本制作社团活动计划
年终医院护理工作总结范文.docx
安庆船舶电气设备研发项目商业计划书
学校2023年植树节宣传标语(汇编4份)
科技创新大赛作品参考 (精选可编辑).docx
电子电路综合设计实验报告
爱岗敬业的心得体会
护理工作计划集锦.docx
体育期末考试质量分析情况 (精选可编辑).DOC
申论作文诚实做人,踏实做事
五年级下册《长方体的认识》优秀教案设计
人劳动防护用品发放记录
小升初语文常考十篇短文文言文 (精选可编辑).DOCX
光泵磁共振.doc
2022版山东省建筑施工企业项目负责人安全员B证考试历年真题汇编(精选)含答案91
蔡晓羽高二数学期末复习九
高消耗SQL之AWR报告材料导出与分析报告
2021年爱与奉献的护士演讲稿.docx
2023-07-14 5页
2022-08-21 2页
2022-08-28 4页
2023-12-05 2页
2022-09-03 65页
2023-04-19 12页
2022-07-29 4页
2022-09-19 3页
2022-09-13 3页
2022-08-06 41页