当前位置:首页
> 正文
65536在计算机内的2进制是多少?
作者:紫南发布时间:2023-03-04浏览:458
首先 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
声明:部分资源转载自互联网,转载目的在于传递更多知识,并不代表本网赞同其观点和对其真实性负责。如有侵权或者知识有谬误之处,麻烦通知删除,谢谢!联系方式: zzsla2022#163.com