进位计数与码制

一.进位计数制

1.认识进制及其书写规范

1)十进制

<用字母D书写>

基数:0~9

2)二进制

<用字母B书写>

  1. 基数:0,1
  2. 位权:2^n
  3. c语言中不能直接用二进制

3)八进制

<用字母O书写>

  1. 基数:0~7,共八个
  2. 位权:8^n
  3. C代码的使用以数字0开头。例如:024

4)十六进制

<用字母H书写>

C代码的使用以0X开头,例如:0XF4

2.进制间的转化

1)十进制转二进制

1.一般方法

十进制转化为八进制,转换为十六进制;以此内推用除8法,除16法(我喜欢这个方法(❤ ω ❤))

整数部分<除2法>小数部分<乘2法>
从下到上取余(取余数)从上到下取整(取小数点前的0或1)

 2.按位权

2)其它进制转十进制

按位权,Then相加

3)二进制与八进制转化

  1. 二进制中0与1的排列组合要想有8种,就是2^3种(占三个字节)———000(0),001(1),010(2),011(3),100(4),101(5),110(6),111(7)
  2. 可以在前面凑0,构成足够位数例如:001001001(B)=111(D)

4)二进制与十六进制转化

  1. 要想用二进制中的0和1表示16种,即2^4种(占用4个字节)———0000(0),0001(1),0010(2),0011(3),0100(4),0101(5),0110(6),0111(7),1000(8),1001(9),1010(10=A),1011  (11=B), 1100 (12=C), 1101( 13=D), 1110(14=E), 1111(15=F)
  2. 例如:67.c2(H)=0110 0111.1110 0010(B)      

 二.码制

1>码值之间的转化 

 1.要让计算机进行计算,得使用补码(计算机只能进行加法运算,所以非负数的原码,反码和补码都相同)

2.负数原码反码补码的转化

共8位,第一位是符号位。大小范围是-128~127.

2>按位取反(通过~运算符进行运算) 

 原来位置上的1变成0,原来的0变成1……

#include<stdio.h>
int main() {
	int a = 3;
	printf("%d", ~a);
	//3:  0000 0011(补码)
	//~a:  1111 1100(补码)=1111 1011(反码)=1000 0100(原码)  ——  -4
}
/*
#include<stdio.h>
int main() {
	int a = -3;
	printf("%d", ~a);
	//-3:  1000 0011(原码)=1111 1100(反码)=1111 1101(补码)
	//~a:                                    0000 0010(补码)(原码)

(注意,int a后,将a的原码转换为补码后才能运算)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿井侯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值