C语言常用且容易忘的语法

本文概述了计算机底层数据存储原理,包括2进制补码表示法,以及按位运算符(如与、或、异或)、逻辑操作符(如&&、||、!)、三目操作符和左右移操作的用法。还介绍了不同进制之间的转换方法,如10进制转2进制、16进制等。
摘要由CSDN通过智能技术生成
我有很多常用的并且容易忘记的语法,所以直接给写成笔记方便记忆

目录:1.数据存储

           2.按位运算符

           3.逻辑操作符

           4.三目操作符

           5.左右移操作符

           6.进制之间的转换

一.数据存储

计算机的底层数据存储都是使用 2 进制补码形式存储,最高位是符号位正数最高位是 0,负数最高位是 1

正数的原码反码补码一样,称为三码合一

负数的原码:把 10 进制转换为 2 进制,最高位为 1

负数的反码:最高位(符号位)不变,在原码的基础上按位取反(0 变 1,1 变 0)  负数的补码:(反码+1)

例如:正数:0001 1010(它的原码反码补码都相同)     负数:1001 1010   负数反码:1110 0101   负数补码:1110 0110

 二、按位运算符

1.按位与&:

以补码的形式进行运算,两个数的 2 进制数同时为 1 结果为 1,不同时为 1 则为 0  例如:数值 A:0000 1001              数值 B:0000 0101  结果:           0000 0001

2.按位或|:

以补码的形式进行运算,两个数的 2 进制其中一个为 1 就为 1,否则为 0 例如:数值 A:0000 1000     数值 B:0000 0101  结果:           0000 1101

3.按位异或^:

以补码的形式进行运算,上下两个数值不同则为 1,相同为 0  例如:数值 A:0000 1010  数值 B:0000 0110  结果:           0000 1100 位操作符只能用于整数!!!

 

三、逻辑操作符

1.逻辑与 &&:

两边条件都为真时,结果为真,两边有一个为假,结果就为假第一个条件为假,第二个条件就不再判断例如:真&&假  运行结果:0

2.逻辑或 ||:

只要有一个条件为真就为真,两个条件都为假就为假

第一个条件为真时,第二个条件就不再判断例如:真||假  运行结果:1

3.逻辑非!:

条件为假时,就为真,条件为真时,就为假例如:!真 运行结果:0

 四、三目操作符

1.三目操作符?:

两个条件比较,条件为真时,返回第一个值,为假时,返回第二个值例如:2>1 ? 真:假

五、左右移操作符

1.左移操作符<<

左侧丢弃,右边补 0

例如:int a = -1;(2 进制表示为 1000 0001)为方便观察只写八个位第八个位为符号位         int b = a << 1;

输出 b 的结果为-2;(2 进制表示为 1000 0010);

2.右移操作符>>

1.算数右移:右边丢弃,左边补符号位

2.逻辑右移:右边丢弃,左边补 0

例如:int a=-5;(2 进制表示为 1000 0101)         int b =a>>1;

输出 b 的结果为-3(2 进制表示为 1000 0011)

左右移操作并不改变 a 本身的值,并且左右移操作符只能用于整数

六、进制之间的转换

1.1. 2 进制转 8 进制

每 3 个 2 进制位合成一个组,每 3 个 2 进制位计算 2 的 2^0,2^1,2^2 次方,得到的结果就是 8 进制例如:0011 01111,转换的结果为 157

1.2. 8 进制转 2 进制

每一个 8 进制位分成一组 2 进制位,一组 3 个 2 进制位,得到的结果就是 2 进制例如:157 分成 3 组 2 进制位

从左往右计算:1 转 2 进制为 001,5 转 2 进制为 101,7 转 2 进制为 111;  合起来的结果就是 2 进制:01101111

2. 10 进制转 2 进制

每次除以 2 取余数,直到最后一个数商 0 为止,把计算的结果反着看就为 10 进制数值例如:13/2 商 6 余 1,6/2 商 3 余 0,3/2 商 2 余 1,1/1 商 0 余 1 得到的 2 进制数值为 1011,把它反过来为 1101

1101 二进制计算的结果为 13

3.1. 2 进制转 16 进制

每 4 个 2 进制位合成一个组,每 4 个 2 进制位计算 2 的 2^0,2^1,2^2,2^3 次方得到的结果就是 16 进制,16 进制中 0-9 用数字表示,10-15 用 a-f 表示例如:0001 0010 0100 0000 1101 1111,转换的结果为 0x1240df

3.2.16 进制转 2 进制

每一个 16 进制位分成一组 2 进制位,一组 4 个 2 进制位,得到的结果就是 2 进制

例如:1240df 分成 6 组 2 进制位,从左往右计算:1 转 2 进制为 0001,2 转 2 进制为 0010

4 转 2 进制为 0100,0 转 2 进制为 0000,d 转 2 进制为 1101,f 转 2 进制为 1111  合起来的结果就是 2 进制:0001 0010 0100 0000 1101 1111

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值