|
![]() | 作者: sniper167 [sniper167]
![]() |
登录 |
函数实现功能:给出一个数的原码,求出该数的补码: unsigned int getbits(unsigned valve) {unsigned int z; z=value&0100000; if (z==0100000) z=~value+1; else z=value; return(z); } 第三行是判断value是否为负,0100000应该是一个8进制数,0100000转化为二进制后为 001 000 000 000 000 000共18位了,如果是16位的计算机,在一个单元就放不下了。再内存中怎样存放? 是把前16位放一起,还是后16位放一起,或是只存放后16位,即只存放1 000 000 000 000 000? |
地主 发表时间: 04-02-24 12:35 |
![]() | 回复: 286 [unique] ![]() |
登录 |
没听明白你说的16位的计算机是什么意思, 所谓16位的计算机是指数据总线是16位的,只是CPU的总线也是16位,但并不是说所有的数都只能用16位表示,就象是你把公路分成16个车道,并不表示每次运输的货物都是16或16的倍数。 此处的0100000系统当然是全部保存了,至于再和value作与操作,二者位数不同,要作隐式转换。 |
B1层 发表时间: 04-02-24 13:24 |
![]() | 回复: sniper167 [sniper167] ![]() |
登录 |
明白了 谢谢 |
B2层 发表时间: 04-02-24 13:27 |
|
20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon
粤ICP备05087286号