VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 14:16:23
VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到
xRMOQ+ d%)d æp9TZiK(PiTZR1#7oV 7OEι{MW7i&jϞqF>YM).~3ySmrzdu@.gzeBN<c0oD7qlgЁ,:6 -mAn]T1t )'0,sצlTh!~ ītIeQ`>eiM4F7vmJu)Ш"{mE[t5>Hy?iC[+@&G:QlS( {~yW2PPM)pq^& >=JDR~z\60⏫X[}F՘NaHs羬MG|c>4x~nazjy!0(< dr`T~i8p5WbXqQ(F:BADӫu *A [[w=VzVo>#~vKXeݨ~n:38[G>(“ PDm:x"

VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到
VB xor 有BUG?
因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到反推之,如果根据最高位知道一个数为负数,那么其值应该是先减1再逐位取反,然后在前面加上负号(我这么认为),但是实际上,计算机还是先把这个数(补码)逐位取反再加1.真是糊涂了!

VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到
因为你用&Hffff默认是Integer的类型的,而Integer的取值范围是-32768(&H8000) 到32767(&H7FFF), 那么你用&HFFF的值就是Integer的-1了,65535 xor -1当然就是 -65536了. 这个跟你说的那个补码没有关系了,因为在VB里,&HFFFF是先转换成对应的Integer(-1值)后才参与xor计算的.