|
5鱼币
进制 位域 相关的的问题;
插入代码(问题在注释里面):
- #include<stdio.h>
- /*IDE&Compile:C-Free 5.0;
- *Attar:C语言 ;
- *TIME:2013年7月18日07:12:08;
- *ABOUT:你知道,这是个非常有趣的代码当你输入+256的时候,打印的结果是-256;
- *我也不知道这是什么情况,待处理中...
- * doing...
- */
- int main(void){
- struct{
- int n:9;
- /*测试的结果是:n:8以下..==0;
- n:8== 0;
- n:9==-256
- n:10==256
- n:11==256
- n:12以上 ..==256;
- */
- }bin;
-
- bin.n=256;
- printf("The bin.n =%d ;\n",bin.n);
- return 0;
- }
复制代码
还有我自己的理解:
操作系统:Win Xp sp3 32bit;
- (DEC)256=(BIN)1 0000 0000
- 0000 0001 0000 0000 (最高位是1,所以是负数)//剩余的8位全部是0,-0,好像又不对,
- 0000 0001 0000 0000=1 0000 0000;
复制代码 |
最佳答案
查看完整内容
楼主 计算机组成原理里层曰 : 在计算机中, 无论正数还是负数都一律采取补码表示
正数的补码还是自己, 负数的补码则是取反加1
楼主 我接着你的说
(DEC)256=(BIN)1 0000 0000
0000 0001 0000 0000 (最高位是1,所以是负数)//剩余的8位全部是0,-0,好像又不对,
0000 0001 0000 0000=1 0000 0000;
此时最高位为1, 为负数, 剩下的8位都是0, 但不代表这玩意(1 0000 0000)是负0
所代表的是0000 0000 取反(因为是负数) 就是 0x ...
|