关于not运算,请指教 (50分)

  • 主题发起人 Tchestnut
  • 开始时间
T

Tchestnut

Unregistered / Unconfirmed
GUEST, unregistred user!
var
a:integer;
begin
a:=240;
a:=not a;
writeln(a);
end.
为什么输出结果不是15而是-241
后来我算了一下240的二进制是11110000
那它的按位与是00001111
可是-241是111111111111111111111111111111111111111000011111
怎么样才能让程序输出15而不是-241呢?
 
不能用integer,位数显然不对,想想吧
 
在DELPHI里INTEGER是32位的整型当然是
111111111111111111111111111111111111111000011111
是不是用BYTE或者SHORTINT
 
Tchestnut:请自己提前或结束帖子,谢谢合作!
 
用Byte正确,ShortInt不能是240吧
 
用shortInt 应该没问题
 
你的位数不对!
应该用无符号8位整数 : a :Byte
 
你的位数不对!
应该用无符号8位整数 : a :Byte
 
定义成DWORD,OK!
 
要得到正确的反码,就要定义成正确的变量类型,你要实现处理240之后得到15,
那就应该采用240+15=255=2^8-1,所以变量类型应该为8位的BYTE
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
888
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部