写一个函数把10进制数按照二进制格式输出:
思路:1.让n 右移i位;2.让n移动i位之后的结果与1与;3.打印与的结果;
#include <stdio.h>
/*
传递整数n,用二进制表示
*/
void changeTo2(int n){
int len =sizeof(n)*8;//获取位数;
int i ;
int temp ;
for (i=0;i<len;i++){
temp = n ; //每次循环n这个数;
temp>>31-i; //依次右移31位 30位..... ;
int t =temp & 1; //用temp与1进行与操作获取每一位数;
printf("%d",t);
}
}
实现两个变量值变换:
/* 用按位异或实现两个变量的位置交换;
#include<stdio.h>
int main(){
int a= 3;
int b= 4;
a = a^b; //按位异或之后它的值就等于a+b;
b = a^b; //按位异或之后b的值就变成a+b-b=3;
a = a^b; //按位异或之后a的值变成了a+b-b=4;从而实现了位置的交换;
printf("%d,%d",a,b);
return 0;
}
*/
输出一个地址使用%p来实现;一般是假如定义了一个 int num = 10;printf("%p",&num)这么来表示 不然就是用指针 int *p =&num 就表示指向num的地址;