有天群里有人问怎么给十六进制取反,就是0x61E90000取反后得到0x9E16FFFF.
有的就讨论了,先转为二进制然后按位取反,完成后再转十六进制.
我想了下,不管多少进制,都是数字,观察后发现两个数组相加和为0xFFFFFFFF.那就是可以用0xFFFFFFFF- 原值就是新的值.公式如下:
定义原十六进制数为int1,新十六进制数为int2 ,那么
int2 = 0xFFFFFFFF - int1;
int2即为得到的新值.
接着讨论下把十六进制转为二进制再取反的情况.
0x61E90000转为二进制是0110 0001 1110 1001 0000 0000 0000 0000.
0x9e16FFFF转为二进制是 1001 1110 0001 0110 1111 1111 1111 1111.
可见确实是按位取反得到的,那么如何对十六进制按位取反操作呢,使用波浪线~来,如下
int2 = ~int1
我们知道,计算机是不能把数字以二进制格式打印的,只能打印八进制,十进制,十六进制,因为数字在计算机中都是二进制存着的,对十六进制按位取反也就是对二进制数字按位取反.
网友评论