C++ 负数转二进制形式
1,十进制的负数转成二进制形式
#include <bitset>
#include <iostream>
//将int类型数据通过二进制的方式打印
void binarycout(int n){
bitset<sizeof(int)*8> mybit(n);
cout<< mybit <<endl;
}
//负数转二进制
void negativeInt2charBuf(int num){
printf("%d\n",num);
if(num<0){
int n=abs(num);//原码
int a=n^0xff;//取反
a=a+1;//加1,得补码
printf("%d\n",a);
binarycout(a);
}
}
//测试
negativeInt2charBuf(-9);
//结果
-9
247
00000000000000000000000011110111
2,将二进制的负数形式转成十进制
void charBuf2Int2(unsigned char buf){
int rt;
rt = (buf & 0x80) >> 7;
//判断是否为负数,1为负 0为正
if(rt==1){
printf("-\n");
unsigned int cc=0;
cc=buf;
cc=cc-1;//减一,
int h=cc^0xff;//再取反
printf("d:%d",-h);
}else{
printf("+\n");
int b=0;
b=buf;
printf("b:%d",b);
}
}
//测试
unsigned char a=0xf7;
charBuf2Int2(a);
//结果
-
d:-9