关于C编程的移位操作

合集下载

C语言的移位操作符使用方法

C语言的移位操作符使用方法

C语言的移位操作符使用方法C语言的移位操作符使用方法位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。

位移位运算符分为左移和右移两种,均为双目运算符。

第一运算对象是移位对象,第二个运算对象是所移的二进制位数。

以下是店铺为大家搜索整理的C语言的移位操作符使用方法,希望能给大家带来帮助!移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。

如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。

若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。

具体移位规则如下所示。

位移位运算符的优先级如下:·算术运算符优先于位移位运算符优先于关系运算符·位移位运算符是同级别的,结合性是自左向右例如,设无符号短整型变量a为0111(对应二进制数为0000000001001001),则:a<<3 结果为01110(对应二进制数为0000001001001000),a不变a>>4 结果为04 (对应二进制数为0000000000000100),a不变又如,设短整型变量a为-4(对应二进制数为1111111111111100),则:a<<3 结果为-32(对应二进制数为1111111111100000),a 不变a>>4 结果为-1(对应二进制数为1111111111111111),a不变C语言里的左移和右移运算2006-09-30 13:52先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:int i = 1;i = i << 2; //把i里的值左移2位也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成 000... 0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的.1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:int i = 0x40000000; //16进制的40000000,为2进制的01000000 (0000)i = i << 1;那么,i在左移1位之后就会变成0x80000000,也就是2进制的100000...0000,符号位被置1,其他位全是0,变成了int类型所能表示的最小值,32位的int这个值是-2147483648,溢出.如果再接着把i左移1位会出现什么情况呢?在C语言中采用了丢弃最高位的处理方法,丢弃了1之后,i的值变成了0.左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:int i = 1, j = 0x80000000; //设int为32位i = i << 33; // 33 % 32 = 1 左移1位,i变成2j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃在用gcc编译这段程序的时候编译器会给出一个warning,说左移位数>=类型长度.那么实际上i,j移动的就是1位,也就是33%32 后的余数.在gcc下是这个规则,别的编译器是不是都一样现在还不清楚.总之左移就是: 丢弃最高位,0补最低位再说右移,明白了左移的道理,那么右移就比较好理解了.右移的概念和左移相反,就是往右边挪动若干位,运算符是>>.右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:int i = 0x80000000;i = i >> 1; //i的值不会变成0x40000000,而会变成0xc0000000就是说,符号位向右移动后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.负数10100110 >>5(假设字长为8位),则得到的是 11111101 总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变 .实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.在很多系统程序中常要求在位(bit)一级进行运算或处理。

c语言移位运算

c语言移位运算

c语言移位运算C语言中的移位运算是一种对二进制数进行左移和右移操作的运算。

它分为算术移位和逻辑移位两种。

算术移位是指将一个二进制数的所有位向左或向右移动指定的位数,移动后空出的位用符号位来填充。

如果是向左移位,最左边的位将被丢弃,而最右边新增的位用符号位来填充;如果是向右移位,最右边的位将被丢弃,而最左边新增的位用符号位来填充。

逻辑移位是指将一个二进制数的所有位向左或向右移动指定的位数,移动后空出的位用0来填充。

如果是向左移位,最左边的位将被丢弃,而最右边新增的位用0来填充;如果是向右移位,最右边的位将被丢弃,而最左边新增的位用0来填充。

在C语言中,移位运算符分别是左移运算符(<<)和右移运算符(>>)。

它们的基本语法如下所示:x << n // 将x向左移动n位x >> n // 将x向右移动n位其中,x表示要进行移位运算的值,n表示要移动的位数。

移位运算在C语言中有多种应用。

1. 乘法和除法的替代移位运算可以快速地执行乘法和除法的操作,特别是2的指数次幂。

例如,x << n相当于将x乘以2的n次幂,而x >> n相当于将x除以2的n次幂。

这在需要进行大量乘除2的操作时可以提高运算速度。

2. 表示和操作位字段移位运算可以用来表示和操作位字段。

位字段是一种将多个独立的位组合在一起表示一个整体值的方式。

通过移位运算和位掩码,我们可以提取或设置位字段中的特定位。

3. 数据的压缩和解压缩移位运算可以用于对数据进行压缩和解压缩。

通过将数据的多个数值组合到一个二进制数中来压缩数据,然后使用移位运算将压缩后的数据解压缩为原始数据。

4. 位运算操作移位运算也可以用于位运算操作,例如与运算、或运算和异或运算。

通过移位运算和位运算操作,可以对二进制数进行高效的位级操作。

移位运算符还可以与赋值运算符组合使用,形成复合赋值运算符。

例如:x <<= n // 将x向左移动n位,并将结果赋值给x(相当于x = x<< n)x >>= n // 将x向右移动n位,并将结果赋值给x(相当于x = x >> n)在使用移位运算时,需要注意一些潜在的问题。

c语言中的移位操作

c语言中的移位操作

C语言中的移位操作时间:2010-12-08C语言中的移位操作,内容不多。

不过有些地方你不注意,就疏忽了。

先做两个小题先。

(1)unsigned char x=3;x<<1是多少?x>>1是多少?(2)char x=3;x<<1是多少?x>>1是多少?(3)char x=-3;x<<1是多少?x>>1是多少?3写成二进制数是00000011;-3写成二进制数是(补码)11111101。

程序执行的时候,操作的是数值的编码表示,也就是数值在内存中的二进制表示。

比如说,程序取-3的时候,就去取11111101。

(1)对无符号数3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。

变成00000110,所以结果是6;x>>1往右边移一位,由于是无符号数,所以逻辑右移,最右边一位移掉,最左边移进来的位补零,变成00000001,所以结果是1。

(2)对于有符号数3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。

变成00000110,所以结果是6;x>>1往右边移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移,这一点,C标准并没有明确地指定是使用逻辑右移还是算术右移。

但大多数的机器都使用算术右移,变成00000001,所以结果还是1。

但是请注意,这只是说大多数的机器是这样的,你敢保证自己不会碰到特殊情况吗?(3)对于有符号数-3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。

变成11111010,结果是-6。

往右移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移。

大多数机器使用算术右移,变成11111110,结果是-2。

总结:左移时总是移位和补零。

右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。

c语言移位运算

c语言移位运算

c语言移位运算C语言移位运算是一种对二进制数字进行移动的操作。

移位运算符分为左移和右移两种,分别用<<和>>表示。

左移运算符(<<)将一个数的所有二进制位向左移动指定的位数,并用0补足空位。

具体操作是将数字的二进制表示向左移动n位,新的空位用0填充。

例如,对于整数5(二进制表示为101),左移2位将得到20(二进制表示为10100)。

左移运算符的使用形式是:result = number << n;其中,number是要进行移位操作的数字,n是要向左移动的位数。

左移运算常用于快速计算2的幂,因为将一个数左移n位相当于将其乘以2的n次方。

例如,1左移3位等于8,即2的3次方。

右移运算符(>>)将一个数的所有二进制位向右移动指定的位数。

如果数字是正数,则用0填充空位;如果数字是负数,则用1填充空位。

例如,对于整数-8(二进制表示为11111111111111111111111111111000),右移2位将得到-2(二进制表示为11111111111111111111111111111110)。

右移运算符的使用形式是:result = number >> n;其中,number是要进行移位操作的数字,n是要向右移动的位数。

右移运算常用于快速计算除以2的整数幂的结果。

例如,16右移2位等于4。

移位运算符还可以与赋值运算符结合使用,形成复合赋值运算符。

例如,x <<= n;等价于x = x << n;。

需要注意的是,对于负数的移位运算,结果可能会产生溢出或未定义的行为。

此外,移位运算的结果取决于系统的表示方式和使用的编译器。

移位运算在C语言中具有许多实际应用。

以下是一些常见的应用场景:1. 快速乘法或除法:通过移位运算,可以快速计算2的幂的乘法或除法。

例如,对于整数x,x << n等效于x * 2^n,x >> n等效于x / 2^n。

C,C++位的移位操作

C,C++位的移位操作

C/C++位的移位操作●左移与右移1.左移运算符(<<)是双目运算符,其功能是把"<<"运算符左边的运算数的各二进位全部左移若干位,移动的位数由"<<" 运算符右边的数指定,高位丢弃,低位补0。

例如:Int a = 0x1234;Unsigned char* p =(unsigned char*)&a;a = *(p)<<8;此时a的最左端一个字节移动8位,a=0x3400;2.右移运算符(>>)是双目运算符,其功能是把">>"运算符左边的运算数的各二进位全部右移若干位,移动的位数按">>"运算符右边的数指定。

在进行右移时对于有符号的数需要注意符号问题,当为正数时,最高位补0,而为负数时,最高位补0或1取决于编译系统的规定,移入0的称为"逻辑右移",移入1的称为"算术右移"。

Int x= 3;3的二进制为:00000011右移1位后为00000001Int a= X>>1此时a = 1;●将0x12345678转换为0x78563412#include<stdio.h>int main(){unsigned int a =0x12345678unsigned int b,c,d,e;unsigned char *p =(unsigned char*)&a;b =(*p)<<24;//将低字节的数据左移24位即3个字节将78移动到12位置c = *(p+1)<<16;d = *(p+2)<<8;e = *(p+3);printf("b=%0x,c=%0x,d=%0x,e=%0x\n",b,c,d,e);a =b+c+d+e;printf(“a=0x%0x\n”,a);return 0;}运行结果如下:b=78000000,c=560000,d=3400,e=12 a=0x78563412。

c语言移位运算

c语言移位运算

c语言移位运算c语言中的移位运算(ShiftOperation)是一种十分有用的可对操作对象内的比特位进行操作的运算方式。

移位运算可以将操作对象内的比特位按照指定的规则进行移位,从而获得新的值。

在c语言中,可以使用以下五种操作来实现移位运算:1、左移(:将操作对象的各二进制位向左移动指定位数,移动空出的位置以0补充。

2、右移(>>):将操作对象的各二进制位向右移动指定位数,移动空出的位置以数据位的最高位补充。

3、循环右移(>>>):将操作对象的各二进制位向右移动指定位数,移动空出的位置以0补充。

4、赋值移位(>>=):将操作对象的各二进制向右移动指定位数,并将移位后的结果重新赋值给操作对象。

5、赋值循环移位(>>>=):将操作对象的各二进制向右循环移动指定位数,并将移位后的结果重新赋值给操作对象。

由于移位运算可以对操作对象内的比特位进行操作,因此在计算机编程中,能够有效地提高计算的效率。

此外,在一些字符串处理、图像处理等应用中,也可以利用移位运算实现许多有用的功能。

例如,通过使用移位运算,可以实现字符串的左右移动、字符串中字符的重新排列、字符串的位屏蔽等操作。

此外,移位运算也可以用于图像处理领域,比如实现图像翻转、旋转、浮雕等处理效果。

另外,在系统编程领域中,也可以通过移位运算来处理特定的位运算,比如编写位掩码程序,根据指定的位掩码来获得位运算的结果。

综上所述,c语言中的移位运算为计算机编程和图像处理提供了一种高效的处理方式,在进行字符处理、图像处理等领域,都可以通过移位运算来实现特定的功能,从而在保证程序运行效率的同时,大大提高程序的执行效率。

c语言小数点移位

c语言小数点移位

c语言小数点移位全文共四篇示例,供读者参考第一篇示例:C语言是一种广泛应用的计算机编程语言,其功能强大且灵活性高,在软件开发领域有着广泛的应用。

在C语言中,有关小数点移位的操作是一项常见且重要的功能。

小数点移位是指将一个数的小数点向左或向右移动若干位,从而改变数值的大小和精度。

在这篇文章中,我们将详细介绍C语言中的小数点移位操作,包括移位的原理、移位的方法和应用示例等内容。

一、小数点移位的原理在C语言中,小数点移位是通过对浮点数进行位运算来实现的。

浮点数是由两个部分组成的:尾数和指数。

尾数表示数值的大小,指数表示小数点的位置。

通过改变指数的值,就可以实现小数点的移位。

当指数增大时,小数点向右移动,数值变大;当指数减小时,小数点向左移动,数值变小。

在C语言中,可以通过移位操作符和位运算来实现小数点的移位。

常用的移位操作符包括<<和>>,分别表示左移和右移。

具体方法如下:1. 左移操作符:<<左移操作符<<可以将一个数的二进制表示向左移动若干位。

左移n位相当于将数值乘以2的n次方。

假设有一个浮点数x,要将其小数点向左移动n位,则可以使用以下代码:```cx = x * pow(2, n);```以下是一个简单的示例,演示如何在C语言中实现小数点的移位操作:```c#include <stdio.h>#include <math.h>x = x * pow(2, n); // 将小数点向左移动两位printf("移位后的值为:%f\n", x);return 0;}```运行以上代码,输出结果为:```移位后的值为:12.56```通过上述示例可以看出,将小数点向左移动两位后,数值变为12.56。

小数点移位是C语言中一项常见的操作,通过改变小数的指数值,可以实现小数点的移动,从而改变数值的大小和精度。

在实际开发中,小数点移位常用于数据处理和算法优化等方面,能够提高程序的性能和效率。

c语言位移与位运算

c语言位移与位运算

c语言位移与位运算在C语言中,位移和位运算是非常重要的概念。

位移是指将二进制数字的所有位按照指定的方向进行移动,而位运算则是对二进制位进行逻辑操作。

一、位移操作1. 左移操作(<<)左移操作将一个数字的所有位向左移动n位,丢弃左边移出的位,右侧用0填补空位。

以无符号整数为例,左移操作的数学表达式为:result = num << n。

例如,对于十进制数10(二进制表示为00001010),执行左移2位操作后,得到的结果是40(二进制表示为00101000)。

2. 右移操作(>>)右移操作将一个数字的所有位向右移动n位,丢弃右边移出的位,左侧用符号位(对于带符号整数)或0(对于无符号整数)填补空位。

以带符号整数为例,右移操作的数学表达式为:result = num >> n。

例如,对于十进制数-10(二进制表示为11110110),执行右移2位操作后,得到的结果是-3(二进制表示为11111101)。

二、位运算操作1. 与运算(&)与运算对两个二进制数的每一位进行逻辑与操作,结果为1的位表示两个二进制数相应位上都为1,否则为0。

与运算的数学表达式为:result = num1 & num2。

例如,对于十进制数10(二进制表示为00001010)和5(二进制表示为00000101),执行与运算后,得到的结果是0(二进制表示为00000000)。

2. 或运算(|)或运算对两个二进制数的每一位进行逻辑或操作,结果为1的位表示两个二进制数相应位上至少有一个为1,否则为0。

或运算的数学表达式为:result = num1 | num2。

例如,对于十进制数10(二进制表示为00001010)和5(二进制表示为00000101),执行或运算后,得到的结果是15(二进制表示为00001111)。

3. 异或运算(^)异或运算对两个二进制数的每一位进行逻辑异或操作,结果为1的位表示两个二进制数相应位上不同,否则为0。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言的移位操作符收藏
位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。

位移位运算符分为左移和右移两种,均为双目运算符。

第一运算对象是移位对象,第二个运算对象是所移的二进制位数。

位移位运算符的运算对象、运算规则与结果、结合性如表2-16所示。

移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移有关。

如果是左移,则规定补入的数全部是0;如果是右移,还与被移位的数据是否带符号有关。

若是不带符号数,则补入的数全部为0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)。

具体移位规则如下所示。

位移位运算符的优先级如下:
·算术运算符优先于位移位运算符优先于关系运算符
·位移位运算符是同级别的,结合性是自左向右
例如,设无符号短整型变量a为0111(对应二进制数为0000000001001001),
则:a<<3 结果为01110(对应二进制数为0000001001001000),a不变
a>>4 结果为04(对应二进制数为0000000000000100),a不变
又如,设短整型变量a为-4(对应二进制数为1111111111111100),
则:a<<3 结果为-32(对应二进制数为1111111111100000),a不变
a>>4 结果为-1(对应二进制数为1111111111111111),a不变
C语言里的左移和右移运算
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例如:
int i = 1;
i = i << 2; //把i里的值左移2位
也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc 里有31个0),左移2位之后变成000... 0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面解释原因)
需要注意的一个问题是int类型最左端的符号位和移位移出去的情况.我们知道,int是有符号的整形数,最左端的1位是符号位,即0正1负,那么移位的时候就会出现溢出,例如:
int i = 0x40000000; //16进制的40000000,为2进制的01000000 (0000)
i = i << 1;
那么,i在左移1位之后就会变成0x80000000,也就是2进制的100000...0000,符号位被置1,其他位全是0,变成了int类型所能表示的最小值,32位的int这个值是
-2147483648,溢出.如果再接着把i左移1位会出现什么情况呢?在C语言中采用了丢弃最高位的处理方法,丢弃了1之后,i的值变成了0.
左移里一个比较特殊的情况是当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,然后按余数进行移位,如:
int i = 1, j = 0x80000000; //设int为32位
i = i << 33; // 33 % 32 = 1 左移1位,i变成2
j = j << 33; // 33 % 32 = 1 左移1位,j变成0,最高位被丢弃
在用gcc编译这段程序的时候编译器会给出一个warning,说左移位数>=类型长度.那么实际上i,j移动的就是1位,也就是33%32后的余数.在gcc下是这个规则,别的编译器是不是都一样现在还不清楚.
总之左移就是: 丢弃最高位,0补最低位
再说右移,明白了左移的道理,那么右移就比较好理解了.
右移的概念和左移相反,就是往右边挪动若干位,运算符是>>.
右移对符号位的处理和左移不同,对于有符号整数来说,比如int类型,右移会保持符号位不变,例如:
int i = 0x80000000;
i = i >> 1; //i的值不会变成0x40000000,而会变成0xc0000000
就是说,符号位向右移动后,正数的话补0,负数补1,也就是汇编语言中的算术右移.同样当移动的位数超过类型的长度时,会取余数,然后移动余数个位.
负数10100110 >>5(假设字长为8位),则得到的
是11111101
总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样会比循环效率高很多.
在很多系统程序中常要求在位(bit)一级进行运算或处理。

C语言提供了位运算的功能,这使得C语言也能像汇编语言一样用来编写系统程序。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━
操作符作用
────────────────────────────
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━按位运算是对字节或字中的实际位进行检测、设置或移位, 它只适用于字符型和整数型变量以及它们的变体, 对其它数据类型不适用。

我们要注意区分位运算和逻辑运算。

1. 按位与运算按位与运算符"&"是双目运算符。

其功能是参与运算的两数各对应的二进位相与。

只有对应的两个二进位均为1时,结果位才为1 ,否则为0。

参与运算的数以补码方式出现。

例如:9&5可写算式如下:00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。

按位与运算通常用来对某些位清0或保留某些位。

例如把a 的高八位清0 ,保留低八位,可作a&255 运算( 255 的二进制数为0000000011111111)。

main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2. 按位或运算按位或运算符“|”是双目运算符。

其功能是参与运算的两数各对应的二进位相或。

只要对应的二个二进位有一个为1时,结果位就为1。

参与运算的两个数均以补码出现。

例如:9|5可写算式如下:00001001|00000101
00001101 (十进制为13)可见9|5=13
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3. 按位异或运算按位异或运算符“^”是双目运算符。

其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。

参与运算数仍以补码出现,例如9^5可写成算式如下:00001001^00000101 00001100 (十进制为12)
main(){
int a=9;
a=a^15;
printf("a=%d\n",a);
}
4. 求反运算求反运算符~为单目运算符,具有右结合性。

其功能是对参与运算的数的各二进位按位求反。

例如~9的运算为:~(0000000000001001)结果为:1111111111110110
5. 左移运算左移运算符“<<”是双目运算符。

其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。

例如:a<<4 指把a的各二进位向左移动4位。

如a=00000011(十进制3),左移4位后为00110000(十进制48)。

6. 右移运算右移运算符“>>”是双目运算符。

其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。

例如:设a=15,a>>2表示把000001111右移为00000011(十进制3)。

应该说明的是,对于有符号数,在右移时,符号位将随同移动。

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

main(){
unsigned a,b;
printf("input a number: ");
scanf("%d",&a);
b=a>>5;
b=b&15;
printf("a=%d\tb=%d\n",a,b);
}
请再看一例!
main(){
char a='a',b='b';
int p,c,d;
p=a;
p=(p<<8)|b;
d=p&0xff;
c=(p&0xff00)>>8;
printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);
}
当进行按位与或时,最好使用16进制,在程序中这样表示:0x01 表示0000 0001 所以,字符类型a的最高位强制1可以这样:a=a|0x80。

其他的可以依次类推!。

相关文档
最新文档