大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
先说结论
假设x为signed int,也就是说它的补码表示中第一位表示符号(1:负;0:正),那么~x=-(x+1)
证明
计算机内部使用补码表示,则问题相当于求证:当x为signed int时,(~x)补=[-(x+1)]补 (0)
证明:
因为补码有个规律:(x+y)补=(x)补+(y)补,所以:
[-(x+1)]补
= [(-x)+(-1)]补
= (-x)补 + (-1)补
要证(~x)补=[-(x+1)]补,只需要证(~x)补-(-x)补=(-1)补 (1)
考虑到:
(~x)补-(-x)补
=(~x)补+(-(-x)补) (2)
而
(-x)补+(-(-x))补
= [(-x) + (-(-x))]补
= [(-x) + x ]补
= 0
也就是说-(-x)补=(-(-x))补 (3)
把(3)带入(2),得到:
(~x)补-(-x)补
= (~x)补+(-(-x))补
= [(~x) + x ]补
= [1111…11]补 (所有位都为1)
= [1111…10]反 (最后一位为0,其它位都为1)
= [1000…01]原 (第一位和最后一位为1,其它位都为0)
= (-1)补
也即(1)得证,因而(0)成立。证毕。
原文:https://www.cnblogs.com/zjutzz/p/10646760.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/170477.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...