c语言程序设计补码是什么,C语言程序设计中关于补码的几个问题的探讨

本文探讨了在C语言程序设计中,利用TurboC整型数据在内存中以补码形式存储的特点,解决初学者在理解整型数据取值范围、有符号与无符号类型转换及求反运算结果判定上的难点。通过补码的引入,阐述了补码定义公式如何帮助理解这些问题的本质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据Turbo C中整型数据类型在内存中的存储形式为补码的特点,巧妙引用补码的定义公式

第22卷

2008年5月甘肃联合大学学报(自然科学版)

JournalofGansuLianheUniversity(NaturalSciences)Vol.22 May2008

文章编号:1672 691X(2008)05 0001 03

C语言程序设计中关于补码的几个问题的探讨

向万里1,王智勇2

(1.兰州交通大学交通运输学院,甘肃兰州730070;2.吉首大学师范学院教务处,湖南吉首416000)摘 要:在C语言程序设计教学过程中,根据TurboC中整型数据类型在内存中的存储形式为补码的特点,巧妙引进补码的定义公式,灵活、简单地解决了初学者难以理解的整型数据取值范围的来源,有符号与无符号类型之间自动转换时输出真值的判定问题,以及在使用求反运算符时如何确定输出真值的问题.在实际教学过程中,通过引进补码的概念及其定义公式,使学生迅速领会了这些问题的本质.关键词:C语言;程序设计;补码;位运算中图分类号:TP311 文献标识码:A

0 引言

随着信息技术的发展和计算机知识的普及应用,现在大部分高校都在开设计算机程序设计课程,尤其是在各个高校的低年级当中开设具有高级语言和低级语言双重特性的C语言.而且,C语言也是学生进一步学习高级程序设计、数据结构和编译原理等课程的基础,是进一步学习深造的敲门砖,因此,各高校对C语言的教学也越来越重视

[1]

1.2 反码表示法

正数的原码与反码相同,负数的反码为正数的数码序列中除去最高位以外所有位逐位取反,即二进制编码序列中0变为1,1变为0.1.3 补码表示法

补码表示方法是:如果为正数,则原码与补码

的表示形式相同;如果为负数,则将负数原码除符号位外其余各位取反,末位加1,即得负数的补码.而且,对于定点整数X(其补码表示的范围为-2n~2n-1)[2],数X的补码记作[X]补,当机器字长为n时,补码定义如公式(1)

[X]补=

X,0 X 2

n

n-1

.但是,笔者在教学的过程当中发现学生对

于整型数据表示范围的真正来历以及位运算中的求反运算在TurboC中运行的结果难以理解.而补码可以担当解释C语言程序设计中这些问题的重要角色,用它可以以追根溯源的形式揭开它们在内存中的真正面目,使学生既加深对补码的认识又真正领会这些问题的本质.

-1; X 0.

2-|X|,-2

n-1

(1)

另外,在原码、反码、补码相互转换的规则中,可以遵循这样的规则:反码的反码是原码,补码的补码是原码.

1 原码、反码、补码

在描述问题之前,我们先看看原码、反码、补码的有关定义.另外,这里只针对TurboC中整型数据类型来加以讨论.1.1 原码表示法

原码表示是一种比较直观的机器数的表示方法:约定数码序列中的最高位为符号位,符号位为0表示该数为正,为1表示该数为负,其余有效数值部分则用二进制的绝对值表示.而且,原码定点整数表示的范围为:-(2n-1)~2n-1[2].

收稿日期:2007 12 24.

2 整型数据类型取值范围的确定

在TurboC当中(这里所用的TurboC为BorlandInternational,inc.的TurboC,Version2.01),整型类型分为有符号和无符号两类.其中有符号的有分为short、int、long三种,用sizeof运算符可以求出它们各自在内存中所占存储空间分别为2字节、2字节、4个字节;无符号也分为unsignedshort、unsignedint、unsignedlong三种,各自在内存中所占存储空间分别为2字节、2字节、4个字节.另外,TurboC当中整型数在内

作者简介:向万里(1978 ),男(土家族),湖南永顺人,兰州交通大学讲师,硕士,主要从事计算机应用的教学研究.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值