VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/21 17:23:42
![VB xor 有BUG?因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到](/uploads/image/z/5496142-22-2.jpg?t=VB+xor+%E6%9C%89BUG%3F%E5%9B%A0%E4%B8%BA%E6%8E%A5%E6%94%B6%E5%88%B0%E7%9A%84%E6%95%B0%E6%8D%AE%E6%9C%89%E6%AD%A3%E8%B4%9F%E4%B9%8B%E5%88%86%2C%E6%95%85%E7%94%A8%E5%88%B0%E5%BC%82%E6%88%96%E5%91%BD%E4%BB%A4.%E4%BD%8665535+xor+65535+%3D0+%EF%BC%88%E6%AD%A3%E7%A1%AE%EF%BC%89+%E4%BD%86+65535+xor+%26Hffff+%E5%8D%B4%E6%98%AF%EF%BC%8D65536+%2C%E8%B4%9F%E6%95%B0%E5%9C%A8%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%AD%E6%98%AF%E4%BB%A5%E8%A1%A5%E7%A0%81%E5%BD%A2%E5%BC%8F%E5%AD%98%E5%9C%A8%2C%E8%A1%A5%E7%A0%81%E4%B8%BA%E5%85%B6%E7%BB%9D%E5%AF%B9%E5%80%BC+%E9%80%90%E4%BD%8D%E5%8F%96%E5%8F%8D%E5%86%8D%E5%8A%A01%E5%BE%97%E5%88%B0%2C%E9%82%A3%E5%88%B0)
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计算的.