进制的总结

 进制分为四种

1:二进制

2:八进制

3:十进制

4:十六进制  

    1.默认就是10进制

    int num = 12;

    2.在前面加上一个0就代表八进制

    int num1 = 014;

    

     %d是以十进制的方式输出一个整数

     printf("%d\n", num1);

     %o是以八进制的方式输出一个整数

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

    

     在数值前面加上0b就代表二进制

     int num2 = 0b1100;

     printf("%d\n", num2);

     在数值前面加上0x就代表十六进制

     int num3 = 0xc;

     printf("%d\n", num3);

     %x是以十六进制的方式输出一个整数

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

    

    口诀:不看你怎么存,只看你怎去取



进制的转换:

 N位二进制的取值范围

     1  取值范围 0~1  0~21次方-1

     2  取值范围 0~3  0~22次方-1

     3  取值范围 0~7  0~23次方-1

     n  取值范围  0~2(n)-1



十进制  -> 二进制

     转换原理:2取余 倒序读取

     二进制 --> 十进制

     转换原理:乘以2的幂数(幂数从0开始), 然后相加

二进制转换为八进制  进制越大表示的位数就越短

     规律:三个二进制位代表一个八进制位  

     因为3位的最大取值是7 而八进制是逢八进一

二进制转换为十六进制

     规律:四个二进制位代表一个十六进制位

     因为4位的最大取值是15, 而十六进制是逢十六进一


原码补码和反码

12的二进制

     12在内存中存储的是它的补码

     00000000  00000000 00000000 00001100

     正数的特点:(三码合一) 正数的原码就是TA的反码就是TA的补码

-12

     二进制的最高位我们称之为符号位 

     如果符号位是0代表是一个正数,

     如果符号位是1代表是一个负数

     10000000  00000000 00000000 00001100 (-12的原码)

     11111111  11111111 11111111 11110011(反码, 符号位不变其它位取反)

     

     11111111  11111111 11111111 11110011

    +00000000  00000000 00000000 00000001

     _____________________________________________

     11111111  11111111 11111111 11110100(补码 , 反码+1)

     

     结论:无论正数负数在内存中存储的都是补码


位运算:

~ 按位取反

     特点: 01 10

<< 左移

     

     a << n 把整数a的二进制位往左边移n

     移出的位砍掉,低位补0, 发现左移会把原有的数值变大

>> 右移

     

     a >> n 把整数a的二进制位往右边移n

     移出的位砍掉, 缺少的以为最高位是0就补01就补1

& 按位与

特点:只有对应的两位都是1才返回1 否则返回0

     口诀: 一假则假

     规律:任何数按位与上1结果还是那个数

| 按位或

     特点:只要对应的两位其中一位是1就返回1

     口诀:一真则真

^ 按位异或

     特点:对应的两位不相同返回1 相同返回0





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值