
C/C 基础知识
文章平均质量分 53
edenliuL
坚持那么几件事,生活就是那么简单美好
展开
-
编译报错 warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
编译报错 warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]原创 2022-06-01 17:58:18 · 4773 阅读 · 0 评论 -
rax,eax,ax,ah,al 关系
深入理解计算机第三章中有这么个例子:在第3.3节中说明了各个寄存器之间的关系:所以rax,eax,ax,ah,al其实是表示同一个寄存器,只是包含不同的范围|63..32|31..16|15-8|7-0| |AH.|AL.| |AX.....| |EAX............||RAX...................|...原创 2021-10-08 10:00:34 · 13140 阅读 · 0 评论 -
何为逻辑位移和算术位移
C语言提供了一组移位运算,向左或者向右移动位模式。左移对于一个位模式表示为[]的操作数x,C表达式x<<k会生成一个值,其位表示为[],也就是说,x向左移动k位,丢弃最高的k位,并在右段补k个0.右移右移分为逻辑右移和算术右移。逻辑右移逻辑右移与逻辑左移类似,对于一个位模式表示为[]的操作数x,C表达式x>>k会生成一个值[],也就是说,x向右移动k位,丢弃最低的k位,并在左段补k个0.算术右移逻辑右移与逻辑左移类似,对于一个位模式表示为[]的操.原创 2021-09-28 11:32:12 · 521 阅读 · 0 评论 -
整数运算溢出
在进行整数运算的加法,乘法时都会涉及到整数溢出的问题,就是计算出的真实数值超出了所能表示的范围大小,这时就会溢出。总的来说 整数运算 实际上是一种模运算形式,如何理解这句话,举个简单的无符号加法的例子:假设一个1字节的无符号整数运算:0xFF+0x01= ?我们首先按照位模式进行计算:0xFF+0x01 =0x100 = b100000000我们截取后8位,最后结果为b00000000 = 0x00void overflow(){ unsigned char i= 0xFF.原创 2021-09-28 11:10:25 · 1735 阅读 · 0 评论 -
位移操作整数取负值
一个小技巧,使用补码运算#include <iostream>void bprint(int p){ int i=0; int bit1 = 1; for (i=sizeof (p) * 8-1;i>=0; i--){ unsigned int x = (((bit1<<i)&p) !=0); printf("%d", x); }原创 2021-09-28 10:21:02 · 147 阅读 · 0 评论 -
浮点数运算和溢出
何为浮点数在大部分实现中,浮点数通常是基于IEEE浮点标准用V=(-1)的形式来表示一个数s是符号位,决定这个数是正数还是负数. significand M是一个二进制小数,范围在[1~ 2 -]或者[0-] 中文称为尾数. exponent E是对浮点数加权,权重是2的E次幂,中文称为码阶将浮点数的位划分位3个字段,分别对这些值进行编码(encode value):最高位的单独位s直接编码成符号s,0或者1,0表示正数,1表示负数 k位的码阶字段集合exp=编码阶码E n位小数...原创 2021-09-28 09:48:26 · 8088 阅读 · 0 评论 -
数值编码之TwosComplement编码方式的计算
内容与介绍TwosComplement编码的转换TwosComplement的计算原创 2020-03-15 23:01:40 · 2279 阅读 · 0 评论 -
float浮点计数法
记录游戏引擎架构-游戏软件工程基础3.2.1.4的理解组成元素一个浮点数由三部分组成:尾数(mantissa),指数(exponent),符号位。这三部分根据不同的标准可以按不同的方式去安排这三部分在内存中的格式,我们按照最流行的IEEE-754标准来说明若使用符号位s(1或者-1),尾数m,指数e去表达一个值v,则v=s**(1+m)符号位显而易见就是控制该值是正数还是负数...原创 2020-03-09 00:58:14 · 1844 阅读 · 0 评论 -
template <int inst> 的功用
template<int inst>的作用最近在看STL源码解析,里面有讲到STL的Allocator,有一个小问题不太理解,求高手指导.第57页给出了SGISTL中这样的定义:template<intinst>class__malloc_alloc_template{.......}书上说,这个定义中,没有"template类型参数",至...转载 2019-10-24 23:03:58 · 1468 阅读 · 0 评论 -
strcasecmp详解
所需头文件: #includeint strcasecmp(const char *s1, const char *s2); int strncasecmp(const char *s1, const char *s2, size_t n);描述:strcasecmp函数比较字符串s1和s2,不区分大小写。strncasecmp函数与strcasecmp类似,翻译 2014-02-21 16:04:37 · 3414 阅读 · 1 评论