一、各种进制的总结
1.二进制
(1) 在c语言中二进制以0b开头,输出二进制格式没有固定的格式,自定义输出二进制格式的函数可以如下定义:
#include <stdio.h>
int main()
{
void printfBinary(int);
printfBinary(20);
return 0;
}
void printfBinary(int n)
{
int bits = sizeof(int) * 8; //计算出整型变量所占的字节数
while (bits-->0) {
//n的二进制形式向右移动bits个字节,然后同1进行按位与运算,保留原来的数值,进行打印。
printf("%d", n>>bits&1);
if (bits%4 == 0) {
printf(" ");
}
}
}
2. 八进制
八进制以 0 开头, 使用 %o 输出整数,不带符号
3. 十六进制
十六进制以0x开头,使用 %x 输出整数
4. 十进制
c语言中除了上述三种格式的进制数外,普通的数据就是以十进制表示的。使用 %d 输出带符号整数, %u 输出不带符号整数
二、互换两个变量值的方法
1.借助中间变量值的方法进行互换
假如两个变量的值分别为: int a = 5, b=6; 如果通过另一个变量来交换,具体的代码如下:
void swap()
{
int a = 5, b=6;
int c = a; //现将a的值放入c中
a = b;
b= c;
}
2. 直接交换
a = b - a; //原来a变成两值之差
b = b - a; //原来b的值变为a
a = b + a; //原来a的值变为b
3. 根据位或运算进行交换,利用位或运算定律 即 a^b^a = b
a = a ^ b;
b = a ^ b;
a = a ^ b;
4.交换两个数的做法,让我想起一个面试题,如下
有两个杯子,分别为A = 5ml 和B = 3ml ,问怎么得到4ml 水, 水是无限的,但是不能使用另外的容器,此题想到有两个方法:
(1) 先将盛满水的A倒入 B 中,然后再将B容器倒出,剩余的A = 2 再倒入B , 盛满 A 再倒入 B,这时A =4ml;
(2) 先将盛满的 B 倒入 A中 ,然后 再盛满B 倒入A中, B 这时为1ml ,倒出A,将B倒入A,然后 ,盛满B再倒入A 即可得 A=4ml;