C语言中负数补码的方法,c语言里求负数补码的总结不足与优点.docx

c语言里求负数补码的总结不足与优点

看C语言编码转换--------负数的二进制表示方法  XX-09-0710:49:17|分类:|标签:|举报|字号订阅  今天在看C语言编码转换时,既然对负数的二进制表示有些遗忘,查了下网上的资料,他们说的是个P!误人子弟!和大家讨论了下,贴出来已备在此遗忘:  假设有一个int类型的数,值为5,那么,我们知道它在计算机中表示为:  5转换成二制是101,不过int类型的数占用4字节,所以前面填了一堆0。  现在想知道,-5在计算机中如何表示?  在计算机中,负数以原码的补码形式表达。  什么叫补码呢?这得从原码,反码说起。  原码:一个正数,按照绝对值大小转换成的二进制数;一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码。  比如是5的原码。是-5的原码。  反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。  取反操作指:原为1,得0;原为0,得1。  比如:正数的反码还是    负数每一位取反,得。  称:是的反码。  反码是相互的,所以也可称:  和互为反码。  补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.  比如:的反码是:。  那么,补码为:  +1=  所以,-5在计算机中表达为:。转换为十六进制:0xFFFFFFFB。  再举一例,我们来看整数-1在计算机中如何表示。  假设这也是一个int类型,那么:  1、先取-1的原码:  2、得反码:  3、得补码:  可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF  主要知识点:  正数的反码和补码都与原码相同。  而负数的反码为对该数的原码除符号位外各位取反。  负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1  下面是书上原文:  原码表示法规定:用符号位和数值表示带符号数,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。  反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。  补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.  正零和负零的补码相同,[+0]补=[-0]补=B  以下选项中非法的字符常量是(B)  A.'\102'  B.'\019'  C.'\xff'  D.'\65'  设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为  B.不确定    判断字符型变量c1是否为数字字符的正确表达式为(A)  A.(c1>='0')&&(c1=0)&&(c1=c1)||('9'k1)后,k1和k2的值分别为  和1  和20  和1  和20  下面四个选项中,均是不合法的用户标识符的选项是。  lao_A  gotoint  C._123tempINT  p_odo  判断字符型变量c1是否为小写字母的正确表达式为。  A.('a'>=c1)||('z'='a')&&(c1=a)&&(c1b)&&(n=c>d)后n的值为。    3ae  若有数学式bc,则不正确的C语言表达式是  *a*e/b*c  /b/c*e*3  *a*e/b/c  *e/c/b*3  设有以下变量定义,并已赋确定的值,charw;intx;floaty;doublez;则表达式:w*x+z-y所求得的数据类型为_【参考答案】  双精度  double____  假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为_9____  若有x=1,y=2,z=3,则表达式(xB&&C>A||AB的值是__0___  在C语言中,不带任何修饰符的浮点常量,是按_双精度____类型数据存储的。  若x和n均是int型变量,且x和n的初值均为5,则精神表达式x+=n++后x的值为10_____,n的值为_____6a?b  数学表达式3(a?b)等价的C语言表达式是_____[无]  【参考答案】  sqrt(abs(a-b))/3/(a+b)  sqrt(fabs(a-b))/3/(a+b)  sqrt(abs(a-b))/(3*(a+b))  sqrt(fabs(a-b))/(3*(a+b))  假设m是一个三位数,从左到右用a、b、c表示各位的数字,则从左到右各个数字是bac的三位数的表达式是_____【参考答案】  c+10*a+100*b  100*b+10*a+c  若s是int型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值