有天群里有人問怎么給十六進制取反,就是0x61E90000取反后得到0x9E16FFFF.
有的就討論了,先轉(zhuǎn)為二進制然后按位取反,完成后再轉(zhuǎn)十六進制.
我想了下,不管多少進制,都是數(shù)字,觀察后發(fā)現(xiàn)兩個數(shù)組相加和為0xFFFFFFFF.那就是可以用0xFFFFFFFF- 原值就是新的值.公式如下:
定義原十六進制數(shù)為int1,新十六進制數(shù)為int2 ,那么
int2 = 0xFFFFFFFF - int1;
int2即為得到的新值.
接著討論下把十六進制轉(zhuǎn)為二進制再取反的情況.
0x61E90000轉(zhuǎn)為二進制是0110 0001 1110 1001 0000 0000 0000 0000.
0x9e16FFFF轉(zhuǎn)為二進制是 1001 1110 0001 0110 1111 1111 1111 1111.
可見確實是按位取反得到的,那么如何對十六進制按位取反操作呢,使用波浪線~來,如下
int2 = ~int1
我們知道,計算機是不能把數(shù)字以二進制格式打印的,只能打印八進制,十進制,十六進制,因為數(shù)字在計算機中都是二進制存著的,對十六進制按位取反也就是對二進制數(shù)字按位取反.