首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我不明白为什么当我按位或短and字符时会得到这样的结果

当你按位或(|)和按位与(&)运算符与字符时,实际上是对字符的ASCII码进行操作。ASCII码是一种将字符映射为整数的编码系统。

按位或运算符(|)将两个操作数的每个对应位进行逻辑或操作,结果中的每个位都是两个操作数对应位的逻辑或结果。

按位与运算符(&)将两个操作数的每个对应位进行逻辑与操作,结果中的每个位都是两个操作数对应位的逻辑与结果。

当你对字符进行按位或和按位与操作时,实际上是对字符的ASCII码进行操作。例如,对字符'A'进行按位或操作,可以表示为'A' | 'B',结果是一个新的整数值,该值是字符'A'和字符'B'的ASCII码进行按位或操作的结果。

同样地,当你对字符进行按位与操作时,例如,对字符'A'进行按位与操作,可以表示为'A' & 'B',结果是一个新的整数值,该值是字符'A'和字符'B'的ASCII码进行按位与操作的结果。

这样的操作通常用于处理二进制数据,例如网络通信、加密算法等。在实际开发中,我们通常不会直接对字符进行按位或和按位与操作,而是对整数进行操作。

关于按位或和按位与运算符的更多信息,你可以参考以下链接:

  • 按位或运算符(|):按位或运算符将两个操作数的每个对应位进行逻辑或操作。腾讯云产品链接
  • 按位与运算符(&):按位与运算符将两个操作数的每个对应位进行逻辑与操作。腾讯云产品链接

请注意,以上链接是腾讯云提供的相关产品介绍,仅供参考。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【C语言加油站】数据在内存中存储

在今天内容中我们将会详细探讨计算机中数据存储方式…… 一、计算机中数据类型 在C语言中我们学习数据类型有7个基本类型:字符类型、整型、整型、长整型、更长整型、单精度浮点型、双精度浮点型…...有细心朋友会发现,对于负数补码而言,如果我们将其进行取反再加1同样也能够得到其原码,因此对于负整数而言,其原码与补码之间转换都可以通过取反再加1方式获取。...从这次测试结果我们可以得到以下结论: 有符号整数在内存中是以补码形式进行存储 正整数原码、反码与补码相等 负整数原码取反得反码,反码+1得补码 负整数补码取反再+1得原码 2.3 采用补码存储整数原因...计算机在存储数据时,不同数据类型所占用内存空间也不相同: 字符类型/布尔类型占用1个字节空间 整型占用2个字节空间 整型/单精度浮点型/指针类型占用4个字节内存空间 长整型/双精度浮点型占用...下面我们先来看一个例子: 从这个例子中可以看到,当我们正常在运算过程中进行强制类型转换时,运算结果是不受影响,但是当我们借助指针进行强制类型转换时,结果却出现了错误。这个是为什么呢?

11410

最近学到链接」知识

一、链接介绍 举个例子,现在GitHub地址是这个:https://github.com/ZhongFuCheng3y/3y (36个字符) 通过百度链接服务可以将上面的地址转成https...链接案例之一 比如在一些平台发布消息时会限制字数,如果我们URL过长就很容易就被限制住了: ? 限制字数 使用链接好处:字符少、美观、便于发布、传播。 二、链接它是怎么干呢?...现在业内用得比较多是发号器(ID自增)+62进制编码: 比如,将https://github.com/ZhongFuCheng3y/3y看作是10000,然后将10000进行62进制编码得到结果是...而64进制转换会含有/,+这样符号(不符合正常URL字符) 10进制转62进制可以缩短字符,如果我们要6字符的话,已经有560亿个组合了。 ?...6字符 总结: ID自增后,转成62进制,在DB保存映射关系,生成链接 ?

1.7K51
  • URL短网址生成算法原理

    id, 2)连接跳转时候,根据字符串查询到对应id,即可实现相应跳转 62种字符组合成6字符,62^6=568亿个组合数量,重复概率是很小 链接好处 1、内容需要;2、用户友好;3、便于管理...为什么这样,原因我想有这样几点: 1)微博限制一条字数为140字,那么如果我们需要发一些连接上去,但是这个连接非常长,以至于将近要占用我们内容一半篇幅,这肯定是不能被允许,所以短网址应运而生了...因为同样URL通过加密算法之后,得到地址是一样。 3)我们可以对一系列网址进行流量,点击等统计,挖掘出大多数用户关注点,这样有利于我们对项目的后续工作更好作出决策。...: 执行上面代码,输出结果如下,会产生4 组6字符串,任意一组都可以作为当前字符链接地址。...: random: ipcblc random: mst/o: 跳转原理 当我们生成链接之后,只需要在数据库MySQL NoSQL表中,存储原始链接与链接映射关系即可。

    4.5K40

    C语言基础--数据类型

    这是参与「掘金日新计划 · 10 月更文挑战」第2天,点击查看活动详情 1.数据类型介绍 在C语言中有很多内置类型,如 char //字符数据类型...反码 将原码符号不变,其他依次取反就可以得到了。 补码 将反码加1即可得到 那么为什么计算机还要再负数上区分出原码反码补码转化关系呢?...为什么对于整形来说:数据存放内存中其实存放是补码? 为什么不直接使用原码存储,这样岂不是更加方便?...//00000000000000000000000000000000 --相加后结果为0 return 0; } 通过上面的正反对比就可以知道为什么在内存中存储是补码 在计算机系统中,...那么为什么要有大小端之分呢? 简单来说,当我数据大于一个字节时候,就会涉及到多个字节顺序安排问题,由此有了大小端存储方式。

    1.1K20

    计算机小白成长历程——数组(1)

    下面我们来探讨一下数组内元素 (2)数组元素 在前面的学习中,我们知道了字符串时由双引号引起单个多个字符组成,字符串会自带一个\0字符,所以当我们将字符串赋值给数组时,实质上是将看得到字符加上...[] = 4; 我们可以看到,这个字符个数和数组元素个数是一致,但是为什么结果不一致呢?...所计算答案进行对比,我们会发现数组b与数组f字符个数与strlen所计算字符长度不相同,为什么这样呢?...会出现这个结果是因为strlen在计算字符长度时,只有遇到\0才会停止计算,但是在数组b和数组f中并未看到\0,所以strlen在计算其长度时会出现将已有的字符计算完后,会继续往后计算,直到遇到\0,才会停止...为什么这里只有24,还有八呢?这个问题问非常好,剩下去哪了呢?我们不妨再仔细看一下打印出来地址前面两是什么?

    15450

    Python实战之特定文本提取,挑战高效办公第一步

    分别包括前三号码类型,比如是中国移动还是中国联通,中间四区号以及后四随机排版数字组成。所以很多电话号码在书写时候都是分为三部分,在中间使用空格点号横杠来进行连接。 ?...之后对四区号数字进行正则表达式匹配(\d{4}|(\d{4})),再进行中间出现空格点号横线([-.\s]),最后匹配随机排版数字(\d{4}|(\d{4}))。...\s]) (\d{4}|\(\d{4}\))''', re.VERBOSE) 之后我们为电子邮箱E-mail创建正则表达式,同样我们知道E-mail地址用户部分是一个多个字符字符,可以包括小写和大写字母数字句点下划线百分号加号横...域名允许字符分类要少一些,只允许字母数字句点和横[\w\d._%±]。 最后是部这在技术上称为顶级域名,并且有2到4个字符.[\w]{2,4}。...所以我们只需要在列表中存储电话号码数字部分即可,然后将每次遍历得到结果存储到列表中: for循环提取特定电话号码: for grops in telRegex.findall(text):

    1.3K20

    程序员如何提一个好问题

    对rkt很感兴趣,但我不明白为什么rkt在运行容器时会比Docker占用更多磁盘空间。...虽然“为什么rkt比Docker要使用更多磁盘空间”不怎么像是正确问题——差不多知道代码是如何工作,但我不明白为什么他们那样写代码。...知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略吗? 当我在一个索引列和一个未索引列之间进行连接时,需要对非索引列进行排序吗?...看到很多高级工程师经常要求澄清说明他不明白地方——觉得当你对自己技能更有信心时,这更容易。 越是这么去做,在要求别人澄清时候就越是感觉自然。...问的人通常真的非常善于说“不,不知道!” 识别你不明白术语 当我开始当前这份工作时,首先去了数据团队。当我看我新工作需要什么时候,有这些要求!

    84750

    程序员如何提一个好问题

    对rkt很感兴趣,但我不明白为什么rkt在运行容器时会比Docker占用更多磁盘空间。...虽然“为什么rkt比Docker要使用更多磁盘空间”不怎么像是正确问题——差不多知道代码是如何工作,但我不明白为什么他们那样写代码。...知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略吗? 当我在一个索引列和一个未索引列之间进行连接时,需要对非索引列进行排序吗?...看到很多高级工程师经常要求澄清说明他不明白地方——觉得当你对自己技能更有信心时,这更容易。 越是这么去做,在要求别人澄清时候就越是感觉自然。...问的人通常真的非常善于说“不,不知道!” 识别你不明白术语 当我开始当前这份工作时,首先去了数据团队。当我看我新工作需要什么时候,有这些要求!

    67430

    程序员如何提一个好问题

    对rkt很感兴趣,但我不明白为什么rkt在运行容器时会比Docker占用更多磁盘空间。...虽然“为什么rkt比Docker要使用更多磁盘空间”不怎么像是正确问题——差不多知道代码是如何工作,但我不明白为什么他们那样写代码。...知道Hadoop有时会“hash连接”——这是其他数据库引擎也使用一个连接策略吗? 当我在一个索引列和一个未索引列之间进行连接时,需要对非索引列进行排序吗?...看到很多高级工程师经常要求澄清说明他不明白地方——觉得当你对自己技能更有信心时,这更容易。 越是这么去做,在要求别人澄清时候就越是感觉自然。...问的人通常真的非常善于说“不,不知道!” 识别你不明白术语 当我开始当前这份工作时,首先去了数据团队。当我看我新工作需要什么时候,有这些要求!

    1K40

    数据在内存中存储方式--C语言版

    1.数据类型介绍 在C语言中有很多内置类型,如 char //字符数据类型 short //整型...反码 将原码符号不变,其他依次取反就可以得到了。 补码 将反码加1即可得到 那么为什么计算机还要再负数上区分出原码反码补码转化关系呢?...为什么对于整形来说:数据存放内存中其实存放是补码? 为什么不直接使用原码存储,这样岂不是更加方便?...//00000000000000000000000000000000 --相加后结果为0 return 0; } 通过上面的正反对比就可以知道为什么在内存中存储是补码 在计算机系统中,...如图所示,更加清晰 那么为什么要有大小端之分呢? 简单来说,当我数据大于一个字节时候,就会涉及到多个字节顺序安排问题,由此有了大小端存储方式。

    56030

    如何实现一个链接服务 | 链接生成原理

    链生成方法# 码一般是由 [a - z, A - Z, 0 - 9] 这62 个字母数字组成,长度也可以自定义,但一般不超过8。...6段, 每5数字作为字母表索引取得特定字符, 依次进行获得6字符串; 总md5串可以获得4个6串;取里面的任意一个就可作为这个长urlurl地址; 这种算法,虽然会生成4个,但是仍然存在重复几率...普通随机数 该方法是从62个字符串中随机取出一个6组合,然后去数据库中查询该码是否已存在。如果已存在,就继续循环该方法重新获取码,否则就直接返回。...+) { // 把得到值与 0x0000003D 进行与运算,取得字符数组 chars 索引(具体需要看chars数组长度 以防下标溢出,注意起点为0)...) index]; // 每次循环右移 5 lHexLong = lHexLong >> 5; }

    17.2K40

    C语言:数据在内存中存储形式

    为了获得这个精度,表达式中字符整型操作数在使⽤之前被转换为普通整型,这种转换称为整型提升。...三、算数转换 明白了整型提升与截断,我们考虑到了计算字符整型操作数使用前情况,那如果操作数类型都大于等于4个字节呢???...我们来看下面这个代码 我们会发现,当我们用int类型存储9,再用float类型取出9时,得到结果是0.000000,而用float类型去存储9.0时,用int类型取出来时1091567616...道理来说,这两种类型都是四个字节,不会出现截断和整型提升,存储内容并没有发生改变,为什么会出现这样情况??...6.3 浮点数取过程 6.3.1 E不全为0不全为1(常规方式) 这时,浮点数就采⽤下⾯规则表⽰,即指数E计算值减去127(1023),得到真实值,再将有效数字M前加上第⼀1。

    18310

    【小家java】Java中二进制与运算(“^,&,>>,>>>”),使用移位算法写一个流水号生成器(订单号生成器)

    不管是初始值是依照何种进制,都会换算成二进制进行操作。 &:与 操作规则是:仅当两个操作数都为1时。输出结果才为1。...2 } |: 操作规则是:仅当两个操作数都为0时,输出结果才为0。...3 } ^:运算操作规则是:仅当两个操作数不同时候。...); // 1 //10 ^ 11 = 01 因此结果为1 } ~:取反 操作规则为:全部0置为1,1置为0,示比例如以下: public static void...在计算机中负数采用二进制补码表示,10进制转为二进制得到是源码,将源码取反得到是反码,反码加1得到补码 public static void main(String[] args) {

    3.7K30

    Base-x 编码奥秘

    互联网杀手级应用——电子邮件系统当初是为了传输 7 ASCII 文本而设计,于是在传输信息时,有些邮件网关会把 [0,31] 这些控制字符给清除,而有些会替换 10 (newline \n)...前两部分十进制依次是 2, 32,所以通过索引表选择值是 C, g 后两部分是补零,所以替换成=。 故结果为 Cg== 为什么需要 Base58?...Base58 主要职责是将大整数表现成文本,它是由中本聪在 Bitcoin 中首先引入进来为什么这样使用呢?...我们第一次用 111/10,得到余数为1,便是个位上数;再次用 11/10,得到余数为1,便是十数;最后用 1/10 得到余数为 1,就是百数。...所以这样就不难理解除法有效性来源。 我们再来看看 Base58 这种编码方式,它有 58 个字符,所以可以表示二进制范围是 000000 - 111001。

    1.2K40

    C++移位运算符

    当时也没有深究过这个问题。前几天有个网友来信问起这件事,才发现,这和IntelCPU移位运算有关。下面是那位网友来信以及回复: 您好!...运算符<<作为操作中高效操作,但我遇到一个问题:下面在VC环境下发现一个很不明白地方,下面标注。...而IntelCPU执行shl指令时,会先将cl与31进行and操作,以限制左移次数小于等于31。因为35 & 31 =3,所以这样指令相当于将1左移3结果是8。...为什么不是5呢 10二进制表示为1010,取反应该为0101,也就是十进制5,为什么会得出-11?...| 两个操作数任意一为1结果就是1 10 = 00000000 00000000 00000000 00001010 12 = 00000000 00000000 00000000

    67310

    scanf使用,cin和scanf区别

    当把一个字符串格式化输出到一个定长缓冲区内时,输出字符串可能被截。不考虑截影响,“%n”格式表示如果不被截偏量值(输出字符数目)。...如果小数部分多于 n ,则对其四舍五入 对于 g 和 G 类型符,最多输出 n 有效数字 对于 s 类型符,如果对应输出串长度不超过 n 个字符,则将其原样输出,否则输出其头 n 个宁符 输出精度由下一个输出参数指定...hello”字符,但为什么输入到“l”就结束了呢?...操作系统:Windows10 集成开发环境:Visual Studio 2017 将stdin与输入文件链接在一起,依次在104、105、106、107量级数据上进行测试,得到结果如下。...画成柱状图如下: 以10000数量级时间为1,可得到这样表格: 由此可见,cin读入相同数据时间是scanf3.5~4倍。

    1K40

    Linux之权限

    同时可以看到,当我使用“sudo”后,系统要输入密码这是为什么呢? 是为了给相信用户提供一个最少执行障碍环境。...也就是说,所有人都拥有对普通文件读写权限,所有人都对目录文件拥有读写和可执行权限,但是当我们创建一个全新文件时发现,操作系统上面显示好像并不是这样: 这是为什么呢?...权限掩码作用是将在其中出现权限在起始权限中全部去掉 ,如果一个权限在 umask 中为1,那么其取反后再与默认权限得到结果一定为0;如果 umask 中为0,则其取反后与默认权限与后不影响默认权限值...但是后来越想越气,心一横决定得不到那就毁掉,于是准备删除wwj文件。可以成功吗? wwj1文件明明没有向other放开任何权限,为什么wbm对wwj1删除操作成功了?...而通过前面的操作我们发现,就算文件没有放开权限,如果目录放开了权限,还是可以删除该目录下文件,所以粘滞是针对目录设计当我给目录加上粘滞以后,得不到就毁掉这样操作行不通了。

    55600

    如何使用Self XSS导致账户接管

    通常,当我真的要寻找漏洞时,我会手动检查任何应用程序,如开放重定向XSS,以找到其他黑客非凡工具可能会忽略参数 所以,当我通过很多不同终端和模糊通过很多不同参数,没有找到任何感兴趣东西...,因为该程序是一个4年老程序,经过很多专业研究人员测试,但我不知道为什么真的想找到一个漏洞在这个目标,因为朋友Kartik Sharma发现了一个非常酷存储XSS在这个目标上,这导致大规模帐户接管...如果你不明白这种行为,让来解释一下那些没有得到它的人,这是因为regex正在检测特殊字符,如" ' > * />,并删除继续网站选项,一旦它检测到任何特殊字符后/#redirect,这意味着来到了像死胡同情况...X-FRAME OPTIONS,这意味着可以写一个js代码,并将其托管在网站上,并进一步利用这个漏洞 :D 没有得到它?...所以,这样 写了这个javascript代码,并将端点托管在服务器上iframe中,由我javascript代码控制 html <meta http-equiv

    96110

    【C语言】室友看了这操作符,连王者都不准备打 |

    除法运算符("/") 取模运算符("%")  移位操作符  操作符  与运算符("&") 运算符("|") 运算符("^")  赋值操作符  单目操作符  ("!")...: number = 1 ---- 运算符("^") 参与运算两个值,如果两个相应位相同,则结果为0,否则为1。...C &= 2 等同于 C = C & 2 ^= 且赋值运算符 C ^= 2 等同于 C = C ^ 2 |= 且赋值运算符 C |= 2 等同于 C = C | 2 只要是符合语法上逻辑都可以这样去进行使用...注意:int(整形) 为了获得这个精度,表达式中字符整型操作符在使用之前,都必须转换为整形提升。...当时不明白这个是为什么结果一看,原来是优先级问题 注意:在这里 + 优先级比 *= 优先级高!当然上面的代码其实本身并不好,因为没有可读性。

    55920

    编辑器对内存使用——数据保存与访问使用(整形篇)

    这样便做到了用不同类型密钥来分辨电脑中都是二进制码分类储存 此时我们就能理解为什么在给变量定义时要写变量类型(告诉编辑器要使用对应密钥),也能够理解为什么当我们用不同类型去定义和访问同一个变量时...(有符号):首先根据定义类型开辟对应内存大小用于存储,然后将数化为2进制得到源码,再依次转化为反码——补码,最后将补码存入内存 反码:为负号时,将源码取反。            ...特别的:如果得到二进制值大于,所用数据类型,此时会发生“截断”,即会丢失多出存储范围(这也是精度丢失主要原因) (2)访问与使用时整形家族数据(解密) 首先整形提升(有些类型不需要整形提升)如果有必要还会有算数转化...原因在于,使用补码,可以将符号和数值域统 一处理; 同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同(补码也可以加一然后取反得到源码),不需要额外硬件电路...为了获得这个精度,表达式中字符整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。

    40230
    领券