VB xor 有BUG?
题目
VB xor 有BUG?
因为接收到的数据有正负之分,故用到异或命令.但65535 xor 65535 =0 (正确) 但 65535 xor &Hffff 却是-65536 ,负数在计算机中是以补码形式存在,补码为其绝对值 逐位取反再加1得到,那到反推之,如果根据最高位知道一个数为负数,那么其值应该是先减1再逐位取反,然后在前面加上负号(我这么认为),但是实际上,计算机还是先把这个数(补码)逐位取反再加1.真是糊涂了!
答案
因为你用&Hffff默认是Integer的类型的,而Integer的取值范围是-32768(&H8000) 到32767(&H7FFF), 那么你用&HFFF的值就是Integer的-1了,65535 xor -1当然就是 -65536了. 这个跟你说的那个补码没有关系了,因为在VB里,&HFFFF是先转换成对应的Integer(-1值)后才参与xor计算的.
举一反三
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
- 《读者》中的文章讲西游记的人物的
- Only with the help or their college or university can American students find jobs.是什么句子结构
- 图—a——b—0—c--问:计算[a]-[b-a]+[a+b]+[c+a]的值 “[ ]”是绝对值符号
- 含氯化钠的碳酸钠与盐酸反应
- 如图,A.OE三点在同一直线上,∠DOE=20°,OB平分∠AOC.且∠COD,∠BOC=2:3,求
- 汽车以10m/s的速度行驶,某时刻开始以2米每二次方秒的速度加速,5s后速度达到多少?
- 问三道应用题(五年级)
- 波涛拍击着海岸.(扩句)
- 已知函数f(x)=sin(2x+θ)+sin(2x-θ)+2cos^2x+a,其中a,θ为常数,且该函数图像经过点(5π/12,a+1).
- 设y=f(x)是一次函数,若f(0)=1,且f(1),f(4),f(13)成等比数列,则f(2)+f(4)+…+f(2n)等于( ) A.n(2n+3) B.n(n+4) C.2n(2n+3) D.
热门考点