谁能解释下c++语言的数据类型 如整形,浮点型的取值范围的解释分析,
2个回答
展开全部
还没学汇编吧。我刚学汇编,有点明白不知道能不能说清楚。
这个跟计算机字长有关。
比如8086是16位的CPU,把一个整数放在一个8位的寄存器如AL(寄存器AX的低8位,可看作一个单独的寄存器),那么它所能处理的数据范围是-128~127(即2^7).最高位为符号位,所以只能用7个位,多了就溢出了。同理:
如果放在16位的寄存器AX中,那么它所能处理的数据范围是-32768~32767(即2^15)
如果是32位的CPU,它的数据寄存器AX就是32位的,即4个字节。
如果定义一种数据类型是4个字节的,那么可放满AX,处理范围为-2^31~2^31-1.
至于为什么范围的正负不对称。跟补码有关。
当然了,16位的CPU也能处理32的数据,得把一个数的高16位放在AX中,把低16位的放在DX中,涉及到进位的问题就比较复杂了。
个人心得不知道能不能帮到你
这个跟计算机字长有关。
比如8086是16位的CPU,把一个整数放在一个8位的寄存器如AL(寄存器AX的低8位,可看作一个单独的寄存器),那么它所能处理的数据范围是-128~127(即2^7).最高位为符号位,所以只能用7个位,多了就溢出了。同理:
如果放在16位的寄存器AX中,那么它所能处理的数据范围是-32768~32767(即2^15)
如果是32位的CPU,它的数据寄存器AX就是32位的,即4个字节。
如果定义一种数据类型是4个字节的,那么可放满AX,处理范围为-2^31~2^31-1.
至于为什么范围的正负不对称。跟补码有关。
当然了,16位的CPU也能处理32的数据,得把一个数的高16位放在AX中,把低16位的放在DX中,涉及到进位的问题就比较复杂了。
个人心得不知道能不能帮到你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询