一 进制

1. 什么是进制

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

2. 二进制

1> 特点: 只有0和1 逢2进1

2> 书写格式: 0b或者0B开头

3> %d 以带符号的十进制形式输出整数的格式符, %u 以不带符号的十进制形式输出整数的格式符

3. 八进制

1> 特点: 0~7 逢八进一

2> 书写格式: 0开头

3> %o 以不带符号的八进制形式输出整数的格式符

4. 十六进制

1> 特点: 0~F 逢十六进一

2> 书写格式: 0x或者0X开头

3> %x 以不带符号的十六进制形式输出整数的格式符

二 类型说明符

1. short和long

1> short和long可以提供不同长度的整型数 也就是可以改变整型数的取值范围

2> 可以连续使用2个long 也就是long long, 一般来说 long long的范围是不小于long的

3> 还有一点要明确的是: short int等价于short, long int等价于long, long long int等价于long long

2. signed和unsigned

1> 首先要明确的: signed int等价于signed, unsigned int等价于unsigned

2> signed和unsigned的区别就是它们的最高位是否要当做符号位 并不会像short和long那样改变数据的长度 即所占的字节数

signed: 表示有符号 也就是说最高位要当做符号位 所以包括正数, 负数和0 其实int的最高位本来就是符号位 已经包括了正负数和0了 因此signed和int是一样的 signed等价于signed int, 也等价于int

unsigned: 表示无符号 也就是说最高位并不当做符号位 所以不包括负数

三 位运算

1. 按位与 &

1> 功能: 只有对应的两个二进位均为1时 结果位才为1 否则为0

2> 举例: 比如9&5 其实就是1001&101=1 因此9&5=1

3> 规律: 二进制中 与1相&就保持原位 与0相&就为0

2. 按位或 |

1> 功能: 只要对应的二个二进位有一个为1时 结果位就为1 否则为0

2> 举例: 比如9|5 其实就是1001|101=1101 因此9|5=13

3. 按位异或 ^

1> 功能: 当对应的二进位相异(不相同)时 结果为1 否则为0

2> 举例: 比如9^5 其实就是1001^101=1100 因此9^5=12

3> 规律: 相同整数相^的结果是0 比如5^5=0 多个整数相^的结果跟顺序无关 比如5^6^7=5^7^6 因此得出结论: a^b^a = b

4. 按位取反 ~

对整数a的各二进位进行取反 符号位也取反(0变1 1变0)

5. 左移 <<

把整数a的各二进位全部左移n位 高位丢弃 低位补0 左移n位其实就是乘以2的n次方

由于左移是丢弃最高位 0补最低位 所以符号位也会被丢弃 左移出来的结果值可能会改变正负性

6. 右移 >>

把整数a的各二进位全部右移n位 保持符号位不变 右移n位其实就是除以2的n次方

为正数时 符号位为0 最高位补0

为负数时 符号位为1 最高位是补0或是补1 取决于编译系统的规定

四 char类型

1. 存储细节

字符在内存中存储的东西就是该字符所对应的ASCII码值

ASCII单字节表(双字节GBK\GB2312\GB18030\Unicode)

2. 注意: 单引号'' 只能扩住单字节的字符

3. 当做整型使用

在-128~127范围内 可以当做整数来用

C 进制 类型说明符 位运算 char类型的更多相关文章

  1. import导入模块,==和is,浅拷贝和深拷贝,进制转换,位运算,私有化,property装饰器

    '''import导入模块'''import sysprint(sys.path) sys.path.append('D://ASoft/Python/PycharmProjects')import ...

  2. 关于Java实现的进制转化(位运算)

    一.需求: 最近在做文件传输的东西,文件传输当然是传输很重要,包括编码格式以及进制的统一. 简略的说一下这次做的东西:首先文件是按照块来发送的,一块一块大的发,但是,发送的过程是这样的: 先发送头部, ...

  3. Python 进制转换、位运算

    一.进制转换 编程用十进制,十进制转换为二进制.八进制.十六进制 In [135]: bin(23) Out[135]: '0b10111' In [136]: oct(23) Out[136]: ' ...

  4. Python 进制转换与位运算

    十进制转二进制.八进制.十六进制: dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为 ...

  5. 【Xcode学C-4】进制知识、位运算符、变量存储细节以及指针的知识点介绍

    一.进制知识 (1)默认是十进制.八进制前面加0.即int num1=015;是13.十六进制前面加0x/0X.即int num1=0xd.结果是13.二进制前面是0b/0B,即int num1=0b ...

  6. .Net 之进制转换 余位补全

    十进制转二进制 Convert.ToString(n, 2) 其中 n -- 源类型 可以是shrot Byte Int Uint Long 2 -- 目标位 可以是2,8,10,16 同理十进制转1 ...

  7. 16进制字符串转QByteArray,char转16进制字符串

    直接上代码,看代码你们就懂了 1.16进制QString转QByteArray QString str = "01 a5 1e 02"; QByteArray tmpBy; Str ...

  8. C++ decltype类型说明符(尾置返回类型使用)

    转自https://blog.csdn.net/yhl_leo/article/details/50865552 1 基本语法 decltype 类型说明符生成指定表达式的类型.在此过程中,编译器分析 ...

  9. C语言高级程序设计——进制算法以及位算符号

    语言不够官方:意会: 数据储存运算是以二进制的,二进制数有原码 反码 补码三种.通常所说的二进制就是原码.(语言不官方) 原码 :4的原码可以为:0000 0100:最高位0 可以为符号数 反码:正数 ...

随机推荐

  1. webAPI请求消息过滤器

    每当制作一个WebAPI,就必然会收到外部很多调用这个API的请求,有时候,我们希望,能从这些外部来的请求中,按照一定条件筛选过滤一下,只将那些我们觉得合法的,有必要回应的请求放进来,一方面挡住那些非 ...

  2. 关于session序列化和session钝化和活化

    在第一次启动服务器后,在session中放入一个对象.在页面可以获得,当重启服务器,但是没有关闭浏览器的情况下刷新页面仍然能够获得这个对象,前提是这个对象必须实现了java.io.Serializab ...

  3. react系列(三)组件间通信

    组件间通信 React的基本组件元素是一个个组件,组件之间可能存在关联.组合等关系.不同的组件之间,经常会发生数据传递或者交换,我们称之为组件间通信. 根据传递的复杂程度,可以分为三种情况: 父子间通 ...

  4. NopCommerce学习(2) EntityFramework

    NopCommerce-EntityFramework开发:主要是Controller-Service-Repository的开发方式 操作数据库,主要对象是BaseEntity,IDbContext ...

  5. Swift_类和结构体

    Swift_类和结构体 点击查看源码 struct Resolution { var width = 0 var height = 0 } class VideoMode { var resoluti ...

  6. ssh登录等待时间超时问题的解决

    最近使用ssh登录服务器时,发现许多服务器会报告等待时间超时的错误,通过网上查找发现是由于ssh中的配置中开启了DNS反查的功能,导致在反查过程中消耗了很长的时间,现将解决方法总结如下: 使用root ...

  7. docker build

    nginx Docfile ----------------------- FROM centos   MAINTAINER daniel   RUN yum install -y wget RUN ...

  8. mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等

    mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等 在mysql的使用过程中,有时候会出现对时间进行的操作,比如时间向前向后滚动,求2个时间的间隔,或者切换时区的操作 1,时间向前滚动( ...

  9. Go复习

    # 代码包 #命名基础包 package “base” #导入基础包 import( "base1" ba "base2" 只导入当不使用情况下需要添加别名 . ...

  10. linux普通用户su root切换提示没有文件或目录

    1. 首先进入单用户模式: 1). ubuntu : 上述情况可以在grub界面选择第二项修复,但没有grub可以参考: 1.重启ubuntu,随即长按shirft进入grub菜单: 2.选择reco ...