# 9.6.位字符串函数和运算符

本节介绍用于检查和操作位字符串(即类型的值)的函数和运算符一点位变我只会打字一点在这些表格中提到,类型为位变可以互换使用。)位字符串支持中所示的常用比较运算符表9.1,以及中所示的操作员表9.14.

表9.14.位字符串运算符

操作人员

描述

例子
一点 || 一点一点

串联

B'10001'| | B'011'10001011
一点 & 一点一点

按位和(输入长度必须相等)

B'10001'和B'01101'00001
一点 | 一点一点

按位或(输入长度必须相等)

B'10001'| B'01101'11101
一点 # 一点一点

位异或(输入长度必须相等)

B'10001'#B'01101'11100
~ 一点一点

按位取反

~B'10001'01110
一点 << 整数一点

按位左移(保留字符串长度)

B'10001'<<301000
一点 >> 整数一点

按位右移(保留字符串长度)

B'10001'>>200100

一些可用于二进制字符串的函数也可用于位字符串,如中所示表9.15.

表9.15.位字符串函数

作用

描述

例子
比特计数 ( 一点 ) → 比基特

返回位字符串中设置的位数(也称为“popcount”)。

比特计数(B'10111')4.
比特长度 ( 一点 ) → 整数

返回位字符串中的位数。

比特长度(B'10111')5.
( 一点 ) → 整数

返回位字符串中的位数。

长度(B'10111')5.
八位组长度 ( 一点 ) → 整数

返回位字符串中的字节数。

八位组长度(B'1011111011')2.
覆盖 ( 一点 放置 新闻订阅字符串 一点 从…起 开始 整数 [ 对于 计数 整数 ] ) → 一点

替换的子字符串*这从开始'第位并扩展为'计数点点滴滴新闻订阅字符串如果计数如果省略,则默认为新闻订阅字符串*.

覆盖层(B'01010101010101010'放置B'11111'从2到3)0111110101010101010
位置 ( 子串 一点 在里面 一点 ) → 整数

返回指定对象的第一个起始索引*子串在内部*,如果不存在,则为零。

位置(B'010'在B'000001101011'中)8.
子串 ( 一点 [ 从…起 开始 整数 ][ for count integer ] ) → 一点

提取*开始'第位(如果已指定),并在计数位(如果指定)。提供至少一个开始计数*.

子串(B'110010111111'从3到2)00
吃点东西 ( 一点, n 整数 ) → 整数

摘录*n*'位字符串中的第位;第一位(最左边)是位0.

获取位(B'101010101010101010',6)1.
设位 ( 一点, n 整数, 新价值 整数 ) → 一点

设置*n'位字符串中的第位到新价值*; 第一位(最左边)是位0.

设置_位(B'101010101010',6,0)101010001010101010

此外,还可以在类型之间转换整数值一点.将整数转换为位(n)复制最右边的n位。将整数强制转换为比整数本身宽的位字符串,将在左侧显示扩展号。例如:

44::bit(10)                    0000101100
44::bit(3)                     100
cast(-44 as bit(12))           111111010100
'1110'::bit(4)::integer        14

请注意,铸造为“钻头”意味着铸造为位(1),因此将只传递整数的最低有效位。