Delphi关于位运算,急~~~~ ( 积分: 50 )

  • 主题发起人 主题发起人 zzandyzh
  • 开始时间 开始时间
Z

zzandyzh

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个8位的数字,我想做到除最后两位不变,其它都变为0,
如:
var
i:byte
begin
i:=(i shl 6) shr 6;
end;


但取出来的不正确,我看资料好像Shl和Shr都是用于32位的位运算,那个8位的位运算怎么做啊?
 
(((1 shl 1) or 1) shl 6) or YourByteNumber
 
liuchong: 不太明白,如果我要做两个8位数字最后两位做异或怎么做?如:

I,Y:byte;我要做I和Y最后两做异或运算,然后生成一个新值!
 
做与运算就行了, 二进制 00000011 = $3
i:= i and $3;
 
好像还是不怎么对!
 
到底是高两位不变还是低两位不变?
高两位不变:i:=(i shr 6) shl 6
低两位不变:i:= i and $3;
 
8位数据
高两位不变 i := i and $C0;
低两位不变 i := i and $03;
 
谢谢各位,搞好了,结贴
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
D
回复
0
查看
925
DelphiTeacher的专栏
D
D
回复
0
查看
880
DelphiTeacher的专栏
D
D
回复
0
查看
853
DelphiTeacher的专栏
D
后退
顶部