二进制转换为其反码形式
t=(a^((int)pow(2,31)-1))+1; for(i=0;i<32;i++) b[i]=((int)pow(2,i)&t)>>i;这段是将负数的二进制转换为其反码 并将其没bit保存到数组中
不过结果有点出入 请指教下
#include <math.h> int main(int argc, char *argv[]) { int a = -125; int t, i, tmp1; int b[32] = {0}; tmp1 = ((int)pow(2, 31)); tmp1 -= 1; t = a ^ tmp1; t += 1; for(i=0; i<31; i++) { //i < 31,ignore sign bit tmp1 = (int)pow(2,i); tmp1 &= t; tmp1 = tmp1 >> i; b[i] = tmp1; } return 0; }改成这样你会不会设断点调了