65536在计算机内的2进制是多少?
unsignedint的范围是0到65535,那int0的2进制与65536的2进制一样吗?是多少呢??...
unsigned int 的范围是0到65535,那 int 0的2进制与65536的2进制一样吗?是多少呢??
展开
展开全部
首先 unsigned int<照你的意思存储范围为0~65535>.所以 是不可能存
储65536.我们可以把unsigned int当作为2个字节大小的容器
意思就是说只能装16位由于65535的2进制表示为:10000000000000000
有17位,我们只取它的后16位,为0000000000000000,所以当我们把65536
赋给一无符号整型后,其实我们只装进了16位,所以最后结果为0.
整形其实很好判断,下面我给你贴一个浮点型被截断的一个题目:
题目原型:
main()
{
double x=2.71828;
printf("%d",x);
}
求X的输出:
我自己的回答:
先求出double类型在内存中的存储方式:再取它的后32个字节
2.71828的2进制表示为10.10110<只精确了5位>
用2进制科学记数法表示为1.010110*2的1次方
所以有2.71828在内存中的表示方式为
0符号位 100000000000<1023+1>阶码 尾数部分1011000000000000000000000000000000000000000000000000
合起来就为:
01000000000001011000000000000000000000000000000000000000000000000
在取后32位输出<这里得不到正确结果的,因为我人为的只保留了5位>
但是象这样的程序我测试过
main()
{
int a=300;
printf("%c",a);
}
因为300在内存中的100101100<这个是底9位>,又因为%c输出一个字符为8位
所以就为
00101100=44,就是把ASCII为44的输出 就是',',这个测试过,是正确的
两个原理一样
今天自己认真的算了一下
2.71828在内存中真真的存储是这样的:
0100000000000101101111110000100110010101101010101111011110010000
我们取出后32位为
10010101101010101111011110010000<补码>求出他的原码为:
- (1101010010101010000100001101111+1)=
-1101010010101010000100001110000=-1783957616
如果是TC下的话,就只取后16位为1111011110010000,同样为负数
同上面一样的求,结果为-2160
所以最后结果为:VC:-1783957616: TC:-2160
储65536.我们可以把unsigned int当作为2个字节大小的容器
意思就是说只能装16位由于65535的2进制表示为:10000000000000000
有17位,我们只取它的后16位,为0000000000000000,所以当我们把65536
赋给一无符号整型后,其实我们只装进了16位,所以最后结果为0.
整形其实很好判断,下面我给你贴一个浮点型被截断的一个题目:
题目原型:
main()
{
double x=2.71828;
printf("%d",x);
}
求X的输出:
我自己的回答:
先求出double类型在内存中的存储方式:再取它的后32个字节
2.71828的2进制表示为10.10110<只精确了5位>
用2进制科学记数法表示为1.010110*2的1次方
所以有2.71828在内存中的表示方式为
0符号位 100000000000<1023+1>阶码 尾数部分1011000000000000000000000000000000000000000000000000
合起来就为:
01000000000001011000000000000000000000000000000000000000000000000
在取后32位输出<这里得不到正确结果的,因为我人为的只保留了5位>
但是象这样的程序我测试过
main()
{
int a=300;
printf("%c",a);
}
因为300在内存中的100101100<这个是底9位>,又因为%c输出一个字符为8位
所以就为
00101100=44,就是把ASCII为44的输出 就是',',这个测试过,是正确的
两个原理一样
今天自己认真的算了一下
2.71828在内存中真真的存储是这样的:
0100000000000101101111110000100110010101101010101111011110010000
我们取出后32位为
10010101101010101111011110010000<补码>求出他的原码为:
- (1101010010101010000100001101111+1)=
-1101010010101010000100001110000=-1783957616
如果是TC下的话,就只取后16位为1111011110010000,同样为负数
同上面一样的求,结果为-2160
所以最后结果为:VC:-1783957616: TC:-2160
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光...
点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
展开全部
int 0的2进制与unsigned short类型的65536的2进制一样
因为 int 0 的二进制码是;0000 0000 0000 0000
而65536= 1 0000 0000 0000 0000 ,两个字节表示不完
如果把65536强制转换为unsigned short类型的,那么最高位的1将溢出掉
所以,也只剩下0了,也就等于0了,也就跟0完全一样了
另外:
在TC环境占用2个字节,VC环境下int是占4个字节的
C语言书上说int占2个字节,未指明环境
因为 int 0 的二进制码是;0000 0000 0000 0000
而65536= 1 0000 0000 0000 0000 ,两个字节表示不完
如果把65536强制转换为unsigned short类型的,那么最高位的1将溢出掉
所以,也只剩下0了,也就等于0了,也就跟0完全一样了
另外:
在TC环境占用2个字节,VC环境下int是占4个字节的
C语言书上说int占2个字节,未指明环境
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就是16位二进制,每一位全是1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我记得int是4个字节的空间,所以如果
int = 65536
会溢出
因为
65536= 1 0000 0000 0000 0000
占5个字节
int = 65536
会溢出
因为
65536= 1 0000 0000 0000 0000
占5个字节
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
65535的2进制:
1111111111111111
1111111111111111
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询