temp&0x80)==0x80什么意思

temp&0x80)==0x80什么意思,第1张

汉字编码区别于其他编码的标志就是汉字编码的最高位是1 0x80在计算机内部表示为1000 0000
这段程序常用于判断当前字符是否是汉字&是按位与, 对应都是1时才为1, 其它情况均未0 如:
1010 1011 & 1000 0000 = 1000 0000 即你问题中的 temp&0x80

"|"在c语言中是逻辑"或"的意思,即两个进行或运算的元素中,只要其中一个的值为真,结果就为真。


0x40和0x80的二进制表示分别为:1000000和10000000
执行"|"运算:


1000000
10000000
——————
11000000

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

~是位取反的符号,为了方便,以下过程以两个字节为例:
0x80是十六进制的80,也就是二进制的0000000010000000,
按位取反为:1111111101111111,计算机内数据是以补码表示的,正数的补码为它本身,负数的被码为除符号位以外,其它各位取反,然后加1,最左边的位是符号位,1表示它是负数,所以原码为减1然后除符号位外各位取反。
减1为:1111111101111110
取反为:1000000010000001,它表示-129,所以
int x=~0x80的意思是把-129赋值给int型变量x

& 是按位与运算 ox表示十六进制数
关于按位与运算,先要将其他的进制数转化为二进制数,然后计算
ox80转化为二进制就是10000000
比如a是十进制数15,转化为二进制数就是
00001111
10000000
上下比较没有相同的位,结果就为0
刚刚查了sbuf,原来是什么单片机啊,虽然没有学过,但刚刚的回答应该没错
计算机都是以二进制的方式储存数据


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13362402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存