二进制补码溢出的判断方法,如
2个回答
展开全部
内存里存储一般是按字节存储的,所以不会有1000001
在内存里有符号的10000001表示10进制的-127
10000001的最高位是符号位,在做补码的时候是不能取反的
所以按取补的逆运算,就可得到原码11111111即10进制的-127
关于溢出
int在16位的编译环境(如TC)下是short int;在32位的编译环境(如vc6.0)下就是长整型,即long int
你的运行环境显然是16位的
有符号整数int的范围是-32768~32767即0x8000~0x7fff
32767即0x7ffff加1后变成了0x8000即-32768
long a=65535在内存中为0x0000ffff
而int b只有16位,在把32赋给16的时候采用截断法,即只把long型数据的后16位赋给int型数据,也就是把0xffff赋给b,而做为有符号数据这正是-1的补码。
在内存里有符号的10000001表示10进制的-127
10000001的最高位是符号位,在做补码的时候是不能取反的
所以按取补的逆运算,就可得到原码11111111即10进制的-127
关于溢出
int在16位的编译环境(如TC)下是short int;在32位的编译环境(如vc6.0)下就是长整型,即long int
你的运行环境显然是16位的
有符号整数int的范围是-32768~32767即0x8000~0x7fff
32767即0x7ffff加1后变成了0x8000即-32768
long a=65535在内存中为0x0000ffff
而int b只有16位,在把32赋给16的时候采用截断法,即只把long型数据的后16位赋给int型数据,也就是把0xffff赋给b,而做为有符号数据这正是-1的补码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询