c语言二进制乘法运算法则,04-C语言进制和位运算

进制基本概念

什么是进制?

进制是一种计数的方式,数值的表示形式

常见的进制

十进制、二进制、八进制、十六进制

进制书写的格式和规律

十进制 0、1、2、3、4、5、6、7、8、9 逢十进一

二进制 0、1 逢二进一

在C语言中, 如果想用二进制表示某个数, 前面需要加上0b;

八进制 0、1、2、3、4、5、6、7 逢八进一

在C语言中, 如果想用八进制表示某个数, 前面需要加上0;

十六进制 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 逢十六进一

在C语言中, 如果想用十六进制表示某个数, 前面需要加上0x;

注意点:

%i %d代表以十进制输出整数

0x 和 0X写法 一样, 0b和0B写法也一样

// 12的不同进制的表达

// 用十进制来表示

int num1 = 12;

printf("num1 = %i\n", num1);

// 用十六进制来表示

int num2 = = 0xc;

printf("num2 = %i\n", num2);

// 用八进制来表示

int num3 = 014;

printf("num3 = %i\n", num3);

// 用二进制来表示

int num4 = 0b1100;

printf("num4 = %i\n", num4);

// 不同进制的输出

int num = 12;

// 以十进制输出

printf("%i\n", num);

// 以八进制输出

printf("%o\n", num);

// 以十六进制输出

printf("%x\n", num);

//二进制

void printBinary(char value){

}

进制转换

十进制转二进制

除2取余, 余数倒序; 得到的序列就是二进制表示形式

/*

* 求12的二进制数

* 12

* 2

* ----

* 6 0

* 2

* ----

* 3 0

* 2

* ----

* 1 1

* 2

* ----

* 0 1

*

* 12 --> 1100

*/

二进制转十进制

规则: 系数 * 基数^(索引)

系数:就是每一位对应的值就是系数;

基数: 如果是二进制转到十进制,那么2就是基数

-如果是从八进制转换到十进制, 那么八就是基数

索引:从最低位以0开始,依次递增;

/*

1*2^3 + 1*2^2 + 0*2^1 + 0*2^0

1 1 0 0

==> 8 + 4 + 0 + 0 = 12

*/

/*

* 二进制快速转换十进制

* 64 32 16 8 4 2 1

* 1 1 1 1 1 1 1

*/

十进制转换八进制

规则: 除8取余,余数倒数

/* 十进制24转换为八进制

*

* 24

* 8

* ---

* 3 0

* 8

* ---

* 0 3

*

* 24 --> 30

*/

二进制转换为八进制

必须知道:在八进制中最大的数字是7

1.可以使用系数 * 基数^(索引) 将二进制转换为8进制

2.二进制在转换为8进制的时候,把三个二进制数看做一个八进制位即可

/*从右至左每3位划分为8进制的1位, 不够前面补0

001 100 100

第0位: 100 等于十进制 4

第1位: 100 等于十进制 4

第2位: 001 等于十进制 1

最终结果: 144就是转换为8进制的值

/*

二进制转换为十六进制

二进制在转换为十六进制的时候,把四个二进制位看做一个十六进制为即可

/*

3 8

0011 1000 ==> 0x38

*/

十进制小数转换为二进制小数

整数部分,直接转换为二进制即可

小数部分,使用"乘2取整,顺序排列"

用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,直到积中的小数部分为零,或者达到所要求的精度为止

然后把取出的整数部分按顺序排列起来, 即是小数部分二进制

最后将整数部分的二进制和小数部分的二进制合并起来, 即是一个二进制小数

例如: 将12.125转换为二进制

// 整数部分(除2取余)

12

/ 2

------

6 // 余0

/ 2

------

3 // 余0

/ 2

------

1 // 余1

/ 2

------

0 // 余1

//12 --> 1100

// 小数部分(乘2取整数积)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值