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____ 假设所有变量均为整型,则表达
负75的补码怎么求式(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型
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论