标题:a=13,为什么~a
只看楼主
qwe789asd4
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-8-24
 问题点数:0 回复次数:6 
a=13,为什么~a
a=13,为什么~a<<2等于-56啊?
13的二进制为1101,~a为0010,那~a<<2不是应该为1000吗,
正确应该怎么算才到-56?请指点
搜索更多相关主题的帖子: 二进制 
2006-08-29 15:26
lisypro
Rank: 4
等 级:业余侠客
威 望:3
帖 子:695
专家分:216
注 册:2005-9-25
得分:0 

Your machine int is 16 bit or 32 bit, not 4 bit.


长期承接管理系统
代做各种vb/ / vc小程序
QQ:82341763
手机:13623290828
群号 11619730
2006-08-29 16:27
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
得分:0 

以C中的两个字节表示:
a = 13 : 00000000 00001101
~a : 11111111 11110010
~a<<2 : 11111111 11001000
以下就是求这个11111111 11001000数的十进制值,可知这数是个负的
对这个数减1得11111111 11000111,
再取反: 00000000 00111000得56因为是个负的,所以就是-56


2006-08-29 16:31
sumnet
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-8-31
得分:0 

LS的大哥
为什么将11111111 11000111换算成十进制要减个1
搞不懂....

2006-08-31 17:12
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
得分:0 
求负数补吗的方法是:将该数的绝对值的二进制形式,按位取反再加1,
要求这个11111111 11001000数的十进制值,我们先把他转化成正数的,就要先减1再取反
你看C程序设计,谭的41面,就知道了

2006-09-01 00:35
sumnet
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-8-31
得分:0 

谢谢了....
发现学的东西不少 漏洞也不少.....

2006-09-01 00:40
daphne
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-7-20
得分:0 
恩~
解释的很清楚了.

2006-09-04 10:54



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-86757-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.238732 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved