[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 【已结】数字按位取反“set /a num=~1的执行结果是-2 ”不解

请教如下语句不解,谢谢!
set /a num=~1的结果是-2

如果是~1的话表示取反,那该是
~ 00000001
-------------------
  11111110
怎么结果是-2呢?

出自namejm[批处理常用符号详解]
“用在 set /a 语句中时,它是一元运算符号,表示将操作数字按位取反,例如,set /a num=~1的执行结果是-2,set /a num=~0的结果是-1”

计算(取反)的中间过程是用补码来表示的


正数原码反码补码都是一样的
1 的补码:00000001
  取反:11111110(是结果的补码)
  还原:10000010(就是 -2)

 详细是:11111110
        -1(符号位不参与运算)
     ---------------
     11111101(结果的反码)
  取反:10000010(符号除外)(结果)

TOP

了解,谢谢回复!

TOP

返回列表